通过mongoengine从文档中获取字段

时间:2013-09-26 11:12:16

标签: python performance mongodb mongoengine

我有一个地方集合,我试图从中提取地名以向用户建议,但这需要花费很多时间,想知道是否有任何方法可以优化。我使用mongoengine ORM,数据库是mongodb。

查询:

results = Place.objects(name__istartswith=query).only('name')

查询在微秒内的时间非常短。

但现在我尝试从结果中访问名称

names = [result.name for result in results]

此行需要很长时间,从3-5秒不等,长度大约为2500。

我尝试使用scalar,但现在当我在另一个列表上建立联合时,时间会增加。

是否有更好的方式来访问名单。

1 个答案:

答案 0 :(得分:0)

查询集在迭代之前不会被操作,因此results = Place.objects(name=query).only('name')返回尚未调用的查询集。当您迭代它时,将进行查询并通过网络发送数据。

通过pymongo运行时查询速度慢吗?由于你不需要它们,因为MongoEngine对象尝试使用as_pymongo - 它会返回原始词典。

其他提示是确保查询具有高效性 - 使用索引 - 请参阅profiler文档。