2012-07-24 82 views
24

我有以下的文档结构:蒙戈DB - 查询嵌套数组和对象

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

如何查询名称键?我试着点符号,但没有运气(我认为它适用于只有两个级别)

+0

如果您有机会做一个_group by_,那么您需要在'value.v'键上使用'$ unwind'操作,然后才能在'name' /'cost'字段上操作。 – 2017-01-06 20:35:16

回答

29

目前尚不清楚究竟你试了一下,但这应该工作由name发现上述文档:

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

Reference

+0

谢谢,我确定它不适合我,也许我错了。 – 2012-07-26 14:42:49

+3

我不认为你可以在数组上使用点运算符。 – 2013-10-11 02:29:04

+1

@ SamuelO'Malley我刚刚更新了Reference链接,它更好地表明了这是数组支持的。 – JohnnyHK 2014-10-27 15:19:52

12

你应该使用$elemMatch操作:

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

Mongo docs