Как вернуть значения только из некоторых полей MongoDB c помщью C# одним запросом

Например у меня есть "MongoDB" база данных с такой структурой:

    person: {
     _id: <ObjectId>,
     name: "Ivan",
     age: "30",
     position: "accountant",
     city: "Moscow"
}

Как я могу вернуть элементы из базы например только полям position и age - ОДНИМ запросом в базу? Я знаю как это сделать за пределами базы, вернуть всю коллекцию и отсеять по нужным элементам, но нужно что бы фильтрация происходила в запросе в базу и все операции по фильтрации происходили в ней.

Я находил примеры с несколькими запросами, там создавали фильтр FilterDefinition и запрашивали элементы по каждому полю, но для меня такой способ не подходит, потому что полей может быть и не 2 а 20 и 50 и 100. Если это важно проект asp net core, mongodb c#.


Ответы (1 шт):

Автор решения: Andrei Khotko

Не работал с MongoDB, но нашел инструкцию с сайта метанита:

С помощью стандартных операций программирования конъюнкции, дизъюнкции и логического отрицания мы можем комбинировать запросы. Например, фильтр на всех документов у которых Name=Bill, либо Name=Tom:

var builder = Builders<BsonDocument>.Filter;
var filter = builder.Eq("Name", "Bill") | builder.Eq("Name", "Tom");
var people = await collection.Find(filter).ToListAsync();
→ Ссылка