Комбинируйте фильтры в mongodb

#.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 этап, если вам нужен конкретный заказ