如何使用Morphia从Mongo数据存储中检索大量文档?

时间:2015-07-23 01:00:14

标签: java mongodb java-8 morphia

我正在使用以下代码来遍历数据库的文档。

public void readDataStore() throws IOException {
        Query query = document_datastore.find(DocumentPojo.class);
        List<DocumentPojo> documentPojos = query.asList();

        documentPojos.forEach(obj -> {
                    try {
                        System.out.println(obj.getDocid());
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
        );    
}

目前,DB的文档不超过100个,但将来它可以有大约100000个文档。我怀疑它可能会遇到性能问题吗?

DocumentPojo是我将结果映射到的类。我使用的是Java 8和Morphia。

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:4)

使用query.fetch()获取MorphiaIterator,然后在获取时处理每个文档。它不会立即将它们全部存入记忆中,允许您处理数十万个文档。

答案 1 :(得分:1)

实现@ evanchooly答案的一种方法:

public void readDataStore() throws IOException {
    final Query query = document_datastore.find(DocumentPojo.class);

    query.fetch().forEach(obj -> {
        try {
            System.out.println(obj.getDocid());
        } catch (final IOException e) {
            e.printStackTrace();
        }
    });    

}