Я использую Mongodb-java-драйвер , Java 8 , MongoDB в качестве бэкэнда.
Ниже приведен код, который я использую для выполнения операции,
public JsonObject getAllRecords(String sortQuery) throws ParseException, MongoOperatorException {
DBCursor dbCursor = null;
try {
JsonObject jsonObject = new JsonObject();
dbCursor = dbCollection.find(dbObject).sort(sortObject).batchSize(500);
JsonArray resultsJsonArray = new JsonArray();
while(dbCursor.hasNext()) {
/**
* Actual: loop 10 million records, Tomcat throws error: java.lang.OutOfMemoryError: Java heap space
* Expectation: Somehow I want to create jsonObject stream from DBCursor and return
*/
resultsJsonArray.add(dbCursor.next());
}
jsonObject.add("results", resultsJsonArray);
} catch(Exception ex) {
// log expection
} finally {
if(dbCursor != null) {
dbCursor.close();
}
}
// Can we stream this jsonObject ?
return jsonObject;
}
Вопрос:
Каким-то образом я хочу создать поток jsonObject из DBCursor и вернуть его. Любая помощь будет высоко оценена .....
ПРИМЕЧАНИЕ: Пагинация здесь не вариант. Мне нужен поток любых данных, извлекаемых из БД.