我是mongodb的新手。有人建议使用mongodb异步java驱动程序api而不是spring data/mongo db驱动程序api,因为异步api支持对db的回调和非阻塞调用。当我浏览下面的链接时,我注意到了一些不同之处。
异步驱动程序api:http://mongodb.github.io/mongo-java-driver/3.0/driver-async/reference/crud/ 同步驱动程序api:http://mongodb.github.io/mongo-java-driver/3.0/driver/reference/crud/
我关心的主要区别是,如何使用异步驱动程序api将resultset文档获取到arraylist/linkedlist中。async api页提供了下面的代码块来遍历结果,但没有将它们分配到我们选择的列表中:
// find documents
collection.find().into(new ArrayList<Document>(),
new SingleResultCallback<List<Document>>() {
@Override
public void onResult(final List<Document> result, final Throwable t) {
System.out.println("Found Documents: #" + result.size());
}
});
这会将文档复制到新的arraylist(into方法的第一个参数)中,但无法将其取回。
而syncapi支持如下操作,即将所有结果文档复制到arraylist中。
// find documents
List<BasicDBObject> foundDocument = collection.find().into(new ArrayList<BasicDBObject>());
异步api还在发展中还是我遗漏了什么?有没有任何实用工具,特别是异步驱动程序的api输入是非常感谢。
祝你好运,钱德拉。
2条答案
按热度按时间9q78igpj1#
我最终使用java 8的完整未来实现了它,如下所示:
祝你好运,钱德拉。
wnavrhmk2#
您可以通过在调用外部声明列表来返回结果。
例如:
因为这些操作是异步的,所以您需要让方法等待它完成。
我希望你通过这个链接
使用mongodb异步驱动程序将文档列表转换为java列表