Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb 我们可以查询值中的键吗_Mongodb - Fatal编程技术网

Mongodb 我们可以查询值中的键吗

Mongodb 我们可以查询值中的键吗,mongodb,Mongodb,在我的文档中,如果键的值本身是json(具有键值)。 如何在值内搜索文档的键 例如: { "_id": { "$oid" : "51711cd87023380037000001" }, "dayData": "{ "daysdata":{"date":"02-12- 2013","week_day":"","month":"","date_day":"","year":"2013"}}" } 如果我有多个这样的文档,并且我希望得到日期为“02-12-2013”的文

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

例如:

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

如果我有多个这样的文档,并且我希望得到日期为“02-12-2013”的文档。我的返回值应该是使用mongodb java驱动程序的key daydata的值

您可以使用点表示法,因此在您的情况下:

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,
        ....
  }
>
可能重复的