簡體   English   中英

如何使用mongodb c#驅動程序過濾嵌套文檔?

[英]How to filter nested documents with mongodb c# driver?

我有下一個查詢,該查詢過濾了集合中的嵌套數組文檔並且不起作用(始終返回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; }

    ...
}

謝謝!

對於復雜或嵌套的查詢,可以嘗試使用聚合函數。 這是關於它的好書https://mikaelkoskinen.net/post/mongodb-aggregation-framework-examples-in-c

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM