【问题标题】:How to filter nested documents with mongodb c# driver?如何使用 mongodb c# 驱动程序过滤嵌套文档?
【发布时间】:2018-12-29 21:18:48
【问题描述】:

我有下一个查询过滤集合中的嵌套数组文档并且不工作(总是返回 false):

var collection = MongoClientSingleton.GetInstance().GetCollection<Access> 
("access");

var filters = Builders<Access>.Filter.Eq("modules", new BsonDocument { { 
"value", val }, { "enabled", true }, { "type", type } });

 return collection.Find(filters).Any();

当我使用 linq 构建过滤器时,我取得了成功:

var filters = Builders<Access>.Filter.Where(a => a.modules.Any(m => m.value == val && m.enabled == true && m.type == type));

但我想让过滤器更像显示的第一个代码(使用 BsonDocument 类)。

Access和Module的类结构是这样的:

public class Access 
{
    ...

    public List<Module> modules {get; set; }

    ...
}

public class Module 
{
    ...

    public string value { get; set; }
    public bool enabled { get; set; }
    public string type { get; set; }

    ...
}

谢谢!

【问题讨论】:

    标签: c# mongodb linq


    【解决方案1】:

    对于复杂或嵌套查询,您可以尝试聚合函数。这是一个很好的阅读 https://mikaelkoskinen.net/post/mongodb-aggregation-framework-examples-in-c

    【讨论】:

    • 有帮助的链接,但在这个例子中不适用于嵌套数组类型的文档..
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-02
    • 1970-01-01
    相关资源
    最近更新 更多