Мне нужно отобразить коллекцию IReadOnlyCollection в MongoDB, но когда я использую фильтры в Mongo, у меня возникают проблемы.
Я пытаюсь использовать поле списка и сопоставить свойство IReadOnlyCollection с этим полем и отобразить поле в Mongo, но возникают проблемы
public class Company : AggregateRoot
{
private List<CompanyDocument> _documents = new List<CompanyDocument>();
public IReadOnlyCollection<CompanyDocument> Documents => _documents.AsReadOnly();
public void AddDocument(Document document)
{
// ...
_documents.Add(new CompanyDocument(document));
}
BsonClassMap.RegisterClassMap<Company>(map =>
{
map.AutoMap();
map.MapField("_adresses").SetElementName("Adresses");
map.MapField("_documents").SetElementName("Documents");
map.MapField("_emails").SetElementName("Emails");
map.MapField("_phones").SetElementName("Phones");
});
var filter = Builders<Company>.Filter.ElemMatch(
c=>c.Documents,
Builders<CompanyDocument>.Filter.Eq(companyDocument =>
companyDocument.Document.Value, "06923123000180"));
var results = _companies
.Find(filter)
.Project(c => new CompanyItemModel
{
//...
});
Я считаю, что вывод - это регистр, которому соответствует элемент в списке документов, но возникает ошибка:
InvalidOperationException: Unable to determine the serialization information for c => c.Documents.
MongoDB.Driver.ExpressionFieldDefinition<TDocument>.Render(IBsonSerializer<TDocument> documentSerializer, IBsonSerializerRegistry serializerRegistry)