通过文档中的数组键查找记录

时间:2014-04-10 08:27:31

标签: mongodb

我有一些像这样的记录

{
  "_id": "test1",
  "friend": {
    "test2": {
      "name": "ax",
      "level": 1,
      "intimacy": 0,
      "status": 0
    },
    "test3": {
      "name": "es",
      "level": 1,
      "intimacy": 0,
      "status": 0
    }
  }
},
{
  "_id": "test2",
  "friend": {
    "test2": {
      "name": "ff",
      "level": 1,
      "intimacy": 0,
      "status": 0
    },
    "test3": {
      "name": "dd",
      "level": 1,
      "intimacy": 0,
      "status": 0
    }
  }
}

我需要在_id = test1的文档中找到friend.test2的节点 我不想改变数据结构来解决这个问题。任何人都可以帮助我。 结果可能是这样的

{
  "test2": {
  "name": "ax",
  "level": 1,
  "intimacy": 0,
  "status": 0
  }
}

3 个答案:

答案 0 :(得分:1)

尝试以下查询。

db.<coll>.find({ _id:"test1" }, { "friend.test2":1 })

答案 1 :(得分:0)

在mongo shell中你可以这样做:

db.collection.find({_id:"test1"},{"friend.test2":1})

对于php,您可以尝试类似

的内容
$collection->find(array("_id"=>"test1"),array("friend.test2"=>true)) 

答案 2 :(得分:0)

以下代码正常运行。测试。

$results = $coll->find(array(), array("_id"=>"test1"),array("friend.test2"=> 1));

foreach($results as $test) { print_r($test); }