0

在我的文档中,如果键的值本身就是一个 json(具有键值)。我如何在值内搜索文档的键。

例如:

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

如果我有多个这样的文档,并且我想获取日期为“02-12-2013”​​的文档。我的返回值应该是使用 mongodb java driver 的 key daydata 的值

4

1 回答 1

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,
        ....
  }
>
于 2013-04-22T10:06:33.903 回答