1

我有一个包含嵌套文档的集合。每个文档还有一个 _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”值,只是为了这个例子。

4

1 回答 1

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 } );
于 2012-06-12T18:00:00.837 回答