MongoDB - 查询嵌套数组和对象

28

我有以下文档结构:

{
   "_id":"12345",
   "value":{
      "T":0,
      "v":[
         {
            "name":"JW",
            "cost":100
         }
      ]
   }
}

我该如何查询名称键?我尝试了点符号表示法,但没有成功(我认为它只适用于两个级别)。


如果您正在进行“group by”操作,则需要在对“name”/“cost”字段进行操作之前,在“value.v”键上使用“$unwind”操作。 - AP.
2个回答

38

你尝试了什么并不清楚,但通过 name,以下代码应该可以找到上述文档:

db.collection.find({ "value.v.name": "JW" })

参考资料


谢谢,我确定它对我没用,可能是我的查询有误。 - karel lahmy
4
我认为你不能在数组上使用点运算符。 - Samuel O'Malley
2
@SamuelO'Malley,我刚刚更新了参考链接,更好地显示了这与数组的支持。 - JohnnyHK

20

您应该使用$elemMatch操作符:

db.collection.find({
    'value.v': { 
        $elemMatch: {
            name: 'JW', // "name == 'JW'"
            cost : 100 //if you need "&& cost == 100"
        }
    }
});

Mongo文档


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接