首页 > 解决方案 > 在 mongodb 中组合过滤器

问题描述

public class Page
{
    public string Title {get;set;}
    public bool IsHomePage {get;set;}
}

在存储库中,我使用 Sample 来检索文档

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();
    

标签: .netmongodb.net-core

解决方案


如何结合以上两个过滤器?

键入的选项:

  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如果您需要特殊订购,请添加阶段


推荐阅读