我正在使用以下代码来遍历数据库的文档。
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。
我该如何解决这个问题?
答案 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();
}
});
}