1

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

询问:

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

查询只需要几微秒的时间。

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

names = [result.name for result in results]

这条线需要很长时间,从 3-5 秒不等,长度约为 2500 的列表。

我尝试过使用scalar,但现在当我对另一个列表进行联合时,时间会增加。

有没有更好的方法来访问名称列表。

4

1 回答 1

0

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

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

其他提示是确保查询是高性能的 - 使用索引 - 请参阅分析器文档。

于 2013-10-01T08:28:28.450 回答