如何使用 Morphia 从 Mongo 数据存储中检索大量文档?
How can I retrieve large number of documents from Mongo datastore using 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
是我将结果映射到的 class。我正在使用 Java 8 和 Morphia。
我该如何解决这个问题?
使用query.fetch()
获取MorphiaIterator
,然后在获取每个文档时对其进行处理。它不会一次将它们全部拉入内存,让您处理十万多个文档。
实现@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();
}
});
}
我正在使用以下代码循环访问数据库的文档。
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
是我将结果映射到的 class。我正在使用 Java 8 和 Morphia。
我该如何解决这个问题?
使用query.fetch()
获取MorphiaIterator
,然后在获取每个文档时对其进行处理。它不会一次将它们全部拉入内存,让您处理十万多个文档。
实现@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();
}
});
}