mongodb中的嵌套文档和_id索引

时间:2012-06-12 17:42:53

标签: mongodb

我有一个包含嵌套文档的集合。每个文档也有一个_id字段。

以下是文档结构的示例

{
   "_id": ObjectId("top_level_doc"),
   "title": "Cadernos",
   "parent": "4fd55bbc5d1709793b000008",
   "criterias": {
     "0": {
       "_id": ObjectId("a_nested_doc"),
       "value": "caderno",
       "operator": "contains",
       "field": "design0" 
    } 
  } 
}

我希望能够通过搜索它的_id

来找到嵌套文档

使用此查询

{
    "criterias._id" : ObjectId("a_nested_doc")
}

它返回父文档(我只想要嵌套的那个)。

理想情况下我会这样做

{
    "_id" : ObjectId("a_nested_doc")
}

它将返回带有该id的文档(无论是嵌套还是非嵌套)。

聚苯乙烯。为了简单起见,我为此示例编辑了“_id”值。

1 个答案:

答案 0 :(得分:1)

您可能必须选择criterias._id(至少不在查询周围编写包装),但您可以通过简单地检索字段的子集来选择文档本身。

http://www.mongodb.org/display/DOCS/Retrieving+a+Subset+of+Fields

// The simplest case converted to your use case
db.collection.find( { criterias._id : ObjectId("a_nested_doc") }, { criterias : 1 } );