Мне было интересно, Spring Mongo API
для find
загружает все в файл List
. Если результат поиска содержит миллиард записей, не повлияет ли это на память? Может ли кто-нибудь предложить лучший способ добиться этого, не загружая все это в память. Использование limit может помочь, но тогда есть недостаток, который заключается в том, что он не узнает, вставлен ли новый документ в коллекцию. Что ж, поиск по лимиту имел бы тот же эффект, если бы коллекция изменилась после чтения X of billion
записей.
Итак два вопроса:
- Повысьте производительность, не загружая все в память
- Как бы вы решили этот неизвестный документ, добавленный во время обработки?
Код из API
List<T> result = new ArrayList<T>();
while (cursor.hasNext()) {
DBObject object = cursor.next();
result.add(objectCallback.doWith(object));
}