2015-07-11 60 views
0

我有一個遊標,它返回的文檔大小超過35k。在Java中,我正在迭代該遊標來獲取文檔。它需要超過20秒。任何可能的解決方案來縮短時間mongodb遊標迭代性能問題

我的代碼:

ArrayList<DBObject> list = new ArrayList<DBObject>() 
collection = mongoDB.getCollection("locations"); 
cursor = collection.find(); 
while (cursor.hasNext()) { 
    list.add(cursor.next()); 
} 
+0

如何使用[「投影」](http://docs.mongodb.org/manual/tutorial/project-fields-from-query-results/)將結果中返回的字段限制爲僅限於那些你需要。或者至少如何處理「查詢」條件以僅匹配所需的文檔,因爲您目前正在要求收集集合中的每個文檔。除了這些基本條件之外,你沒有給予足夠的信息讓人們做出真正的判斷。 –

回答

0

當你擁有它,你真的可以嘗試去做的唯一的兩項線相結合,減少開銷的一點點。

ArrayList<DBObject> list = new ArrayList<DBObject>(); 
    cursor = mongoDB.getCollection("locations").find(); 
    while (cursor.hasNext()) { 
     list.add(cursor.next()); 
    } 

該問題可能少於代碼和更多文檔的大小。你需要集合中的每個文檔嗎?有沒有辦法可以過濾出一些?

+0

是的,我需要該集合中的每個文檔,並且每個文檔的大小和字段也非常少。這裏有一個樣本:{_id:1,位置:「印度」,代碼:「0-0-1」} – Raj

+0

該集合中有多少文檔? – Clint

+0

大約有37K個文件。 – Raj