1

在我的 mongodb 集合中,我有一个包含两级嵌入文档的集合。

Collection
 - field1
 - field2
 - EmbeddedDocuments1
    - field_a
    - field_b
    - EmbeddedDocument_a
       - field_A
       - field_B
       - field_C
  - EmbeddedDocuments2
    - field_c
    - field_d
    - EmbeddedDocument_a
       - field_D
       - field_E
       - field_F
 - EmbeddedDocuments3
    - field_e
    - field_f
    - EmbeddedDocument_a
       - field_G
       - field_H
       - field_I

当我进行查询以查找特定的第二级文档时,需要很长时间,~= 500ms

我尝试的查询类似于下面的行,我只想从第二级文档中获取数据。

db.collections.find({ "embedded_documents_1.embedded_documents_2._id":ObjectId("502e8f5565ce10780f00000c")  })

但是,这会返回整个一个集合,其中包含 field1、field2、所有 EmbeddedDocuments

我在这里做错了吗?

4

1 回答 1

0

您的查询正在搜索与 "embedded_documents_1.embedded_documents_2._id":ObjectId("502e8f5565ce10780f00000c") 匹配的任何文档

因此,它已完整返回与此匹配的每个文档。嵌入式文档本质上是另一个文档中的文档。所以 mongodb 已经返回了完整的文档。

您需要将返回的值限制为仅二级文档。查看http://www.mongodb.org/display/DOCS/Querying#Querying-FieldSelection以获取有关如何限制查询的信息。

于 2012-09-11T01:46:55.220 回答