Я использую официальный строго типизированный драйвер C # MongoDb версии 2.7.2 для взаимодействия с MongoDB v 4.0 на компьютере с Windows 10.
Рассмотрим следующие классы:
public class Library
{
[BsonId]
[BsonRepresentation(BsonType.ObjectId)]
public string Id { get; set; }
public DateTime DateAdded { get; set; }
public DateTime LastModified { get; set; }
public string Title { get; set; }
public Author Author { get; set; }
public bool AllBooks { get; set; }
}
public class Author {
[BsonId]
[BsonRepresentation(BsonType.ObjectId)]
public string Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string BirthDate { get; set; }
public string ScientificDegree { get; set; }
public List<Book> Books { get; set; }
}
public class Book
{
[BsonId]
[BsonRepresentation(BsonType.ObjectId)]
public string Id { get; set; }
public string Title { get; set; }
public int PublishYear { get; set; }
public string Content { get; set; }
public bool IsVerified { get; set; }
public int DownloadCount {get; set; }
}
Какполучить все библиотеки с автором с количеством загрузок не менее 1000, вот мой код:
string libraryId = GetLibraryId();
var repository = _database.GetCollection<Library>("Libraries");
var filter = Builders<Library>.Filter.Where(l => l.Id == libraryId &&
l.Author.Books.Sum(b => b.DownloadCount) >= 1000);
var libraries = await repository.Find(filter).ToListAsync();
В последней строке выдается System.ArgumentException: неподдерживаемый фильтр: Sum