将DBCursor转换为JSON对象流

时间:2019-04-25 13:26:37

标签: json java-8 cursor java-stream streaming

我正在使用 Mongodb-java-driver 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;
}

问题:

我想以某种方式从DBCursor创建jsonObject流并返回,任何帮助将不胜感激.....

  

注意:此处不能选择分页。我需要从数据库中获取任何数据流。

0 个答案:

没有答案