Как выполнить фильтрацию на основе суммы свойств вложенного элемента массива в строгом типе драйвера C # Mongodb - PullRequest
0 голосов
/ 17 декабря 2018

Я использую официальный строго типизированный драйвер 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...