#.net #mongodb #.net-core
Вопрос:
public class Page { public string Title {get;set;} public bool IsHomePage {get;set;} }
В репозитории я использую образец для извлечения документов
return await db.myCollection .Aggregate() .Match(filter) .ToListAsync();
можно ли расширить этот запрос, чтобы вернуть все документы, для которых установлено свойство
IsHomePage
true
, а для остальных —IsHomePage
значениеfalse
;
var filter = Builders<Post>.Filter.Eq(x => x.IsHomePage, true); var homePageDocsFilter = await db.myCollection .Aggregate() .Match(filter) .ToListAsync(); // can this be in-memory call? var filter2 = Builders<Post>.Filter.Eq(x => x.IsHomePage, false); var otherDocs = await db.myCollection .Aggregate() .Match(filter2) .ToListAsync(); // can this be in-memory call?
как объединить эти два вышеуказанных фильтра?
return await db.myCollection .Aggregate() .Match(COMBINED_FILTER) .ToListAsync();
Ответ №1:
как объединить эти два вышеуказанных фильтра?
Набранные параметры:
var filter = Builders<Post>.Filter.Eq(x => x.IsHomePage, true) | Builders<Post>.Filter.Eq(x => x.IsHomePage, false); var filter = Builders<Post>.Filter.Or(Builders<Post>.Filter.Eq(x => x.IsHomePage, false), Builders<Post>.Filter.Eq(x => x.IsHomePage, true))
добавьте Sort
этап, если вам нужен конкретный заказ