2013-04-22 80 views
0

在我的文檔中,如果一個鍵的值本身是一個JSON(具有鍵值)。 我該如何搜索值內的文檔的關鍵。我們可以查詢值內的鍵

爲前:

{ "_id": { "$oid" : "51711cd87023380037000001" }, 
    "dayData": "{ "daysdata":{"date":"02-12- 2013","week_day":"","month":"","date_day":"","year":"2013"}}" 
    } 

如果我有多個文件,像這樣的,我想要得到的有單據日期「02-12- 2013」​​。我的返回值應該使用MongoDB的Java驅動程序是關鍵daydata的價值

+0

[在mongo上查詢內部函數]的可能重複(http://stackoverflow.com/questions/16140978/querying-on-internals-in-mongo) – mnemosyn 2013-04-22 10:06:23

回答

2

您可以使用點符號,所以你的情況:

db.collection.ensureIndex({'dayData.daysdata.date': 1}); 

然後

db.collection.find({'dayData.daysdata.date': 02-12-2013}); 

爲例:

> db.test.insert({x: {x: {x: 1}}}) 
> db.test.insert({x: {x: {x: 2}}}) 
> db.test.insert({x: {x: {x: 3}}}) 
> 
> db.test.ensureIndex({'x.x.x': 1}) 
> 
> db.test.find({'x.x.x': 2}, {_id: false}) 
    {"x" : { "x" : { "x" : 2} } } 
> 

證明其使用該索引:

> db.test.find({'x.x.x': 2}, {_id: false}).explain() 
    { 
    "cursor" : "BtreeCursor x.x.x_1", 
    "n" : 1, 
    "nscannedObjects" : 1, 
    "nscanned" : 1, 
     .... 
    } 
> 
相關問題