【发布时间】:2013-04-13 17:17:40
【问题描述】:
我使用 mongoengine 作为对象文档映射器。以下是导致问题的集合的简要说明。集合 A 中的每个文档都可以包含对集合 B 中文档的引用列表。
class A(Document):
list_b = ListField(EmbeddedDocumentField(EB))
#other fields are not mentioned.
class EB(EmbeddedDocument):
b_reference = ReferenceField('B')
loc = GeoPointField()
class B(Document):
name = StringField()
#other fields are not mentioned.
当我尝试使用
访问特定文档的列表对象时document_of_A.list_b
上述行的执行时间取决于列表中存在的引用数。例如。列表中的 100 个引用需要 100 毫秒。
有没有更好的方法来获取引用?,从而减少上述行的执行时间。
【问题讨论】:
-
欢迎迎接 MongoDb 文档组织的挑战。 :) docs.mongodb.org/manual/core/data-modeling 您需要所有参考文件吗?
-
是否对文档
B的引用进行了索引,以便可以一次返回对与A相关的文档的请求? -
不,'list_b' 字段上没有索引。
-
如果它们没有被索引,MongoDB 可能需要搜索每个文档以寻找匹配项。
-
创建索引后也没有变化。
标签: mongodb optimization pymongo mongoengine