2015-07-11 2 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

Как об использовании ["projection"] (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, location: "India", code: "0-0-1"} – Raj

+0

Сколько из этих документов есть в этой коллекции? – Clint

+0

около 37k документов. – Raj

Смежные вопросы