2012-07-24 68 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