在我的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
我在这里做错了吗?
答案 0 :(得分:0)
您的查询正在搜索与“embedded_documents_1.embedded_documents_2._id”匹配的任何文档:ObjectId(“502e8f5565ce10780f00000c”)
所以它已经完整地返回了与之匹配的每个文档。嵌入式文档本质上是其他文档中的文档。所以mongodb已经返回了完整的文件。
您需要将返回的值限制为仅限二级文档。有关如何限制查询的信息,请查看http://www.mongodb.org/display/DOCS/Querying#Querying-FieldSelection。