如何通过.net mongoDb驱动程序通过嵌套属性在mongoDb中获取文档

时间:2018-06-21 21:33:16

标签: .net mongodb azure-cosmosdb mongodb-.net-driver

假设我在某些收藏夹中有以下文件

   [{
            "name": "Man1",            
            "Childrens": [
                 {
                     "name": "Children 1",
                     "age": "12"
                 },
                 {
                     "name": "Children 2",
                     "age": "18"
                 },
             ]
        },
{
            "name": "Man1",            
            "Childrens": [
                 {
                     "name": "Children 3",
                     "age": "12"
                 },
                 {
                     "name": "Children 4",
                     "age": "18"
                 },
             ]
        }
]

我想获取其中一个孩子的名字是“ Children 1”的文件

我想通过.net mongo驱动程序实现此目标

var bQuery = String.Format("{{ '{0}':'{1}' }}","Childrens.name","Children 1");
var filter = MongoDB.Bson.Serialization.BsonSerializer.Deserialize<BsonDocument>(bQuery);
result = await db.GetCollection<T>(collectionName).Find<T>(filter).ToListAsync(); 

但此返回空列表 我好像在哪里

var bQuery = String.Format("{{ '{0}':'{1}' }}","name","Man1");

有效

所以当我们通过嵌套属性搜索时,我无法使其工作

1 个答案:

答案 0 :(得分:1)

请尝试使用以下代码,并且我已经成功测试:

npm i node-opus

您的代码为:

{ "Childrens": { $elemMatch: { "name": "Children 1"} } }