2013-09-26 114 views
1

我有一個地方集合,我嘗試從中提取地名以向用戶提供建議,但這需要花費很多時間,想知道是否有任何方法可以優化。我使用mongoengine ORM,數據庫是mongodb。通過mongoengine從文檔獲取字段

查詢:

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

的查詢需要很短的時間以微秒的問題。

但現在當我嘗試從結果

names = [result.name for result in results] 

這條線需要很長的時間,3-5秒變化,爲長度約2500

我的列表訪問名字已嘗試使用scalar,但現在時間增加,當我做一個工會在另一個名單。

有沒有更好的方法來訪問名稱列表。

回答

0

查詢集在迭代之前不會被執行,所以results = Place.objects(name=query).only('name')返回一個尚未被調用的查詢集。當您迭代它時,將發生查詢並通過電線發送數據。

通過pymongo運行時查詢速度是否緩慢?由於MongoEngine對象不需要使用as_pymongo - 它會返回原始字典。

其他提示是確保查詢是高性能的 - 使用索引 - 請參閱profiler文檔。

+0

acurally它與正則表達式匹配的問題,我使用Place.object(name__istartswith),並有一個字段「名稱」的索引,我正在閱讀一些文件在MongoDB上,他們說這是因爲這個正則表達式緩慢。原來的問題我改變了 –

相關問題