通过mongoengine从文档获取字段

问题描述:

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

查询:

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

的查询需要很短的时间以微秒的问题。

但现在当我尝试从结果

names = [result.name for result in results] 

这条线需要很长的时间,3-5秒变化,为长度约2500

我的列表访问名字已尝试使用scalar,但现在时间增加,当我做一个工会在另一个名单。

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

查询集在迭代之前不会被执行,所以results = Place.objects(name=query).only('name')返回一个尚未被调用的查询集。当您迭代它时,将发生查询并通过电线发送数据。

通过pymongo运行时查询速度是否缓慢?由于MongoEngine对象不需要使用as_pymongo - 它会返回原始字典。

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

+0

acurally它与正则表达式匹配的问题,我使用Place.object(name__istartswith),并有一个字段“名称”的索引,我正在阅读一些文件在MongoDB上,他们说这是因为这个正则表达式缓慢。原来的问题我改变了 –