Проблема в том, что вы используете into()
, который загружает все данные сразу в List
, поэтому, возможно, перегрузка кучи, если данные очень большие.
Вместо этого вам следует использовать iterator()
, который использует курсор базы данных для обработки данных один за другим, не загружая их в память приложения. Эта концепция не ограничивается Mon go, это общий механизм для всех баз данных (именно поэтому существует сама концепция курсоров).
Например:
...
FindIterable<Document> documentCursor = collection.find(document);
for (Document doc : documentCursor) {
...
}