Преобразование DBCursor в поток объектов JSON - PullRequest
0 голосов
/ 25 апреля 2019

Я использую 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 и вернуть его. Любая помощь будет высоко оценена .....

ПРИМЕЧАНИЕ: Пагинация здесь не вариант. Мне нужен поток любых данных, извлекаемых из БД.

...