我是MongoDB的新手。由于异步API支持对数据库的回调和非阻塞调用,因此建议使用MongoDB异步Java驱动程序API而不是Spring-Data / Mongo数据库驱动程序API。当我通过以下链接时,我注意到了一些差异。
异步驱动程序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/
我担心的主要区别是,我们如何使用async驱动程序api将结果集文档放入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方法的第一个参数),但是无法将其恢复。
虽然sync api支持如下操作,但会将所有结果文档复制到arraylist中。
// find documents
List<BasicDBObject> foundDocument = collection.find().into(new ArrayList<BasicDBObject>());
Async API是否仍在发展或者我遗失了什么?是否有专门为异步驱动程序api提供的实用程序非常感谢输入。
最诚挚的问候, 钱德拉。
答案 0 :(得分:1)
您可以通过在通话外声明列表来返回结果。
例如:
List<Document> docs = new ArrayList<>();
collection.find().into(docs,
new SingleResultCallback<List<Document>>() {
@Override
public void onResult(final List<Document> result, final Throwable t) {
System.out.println("Found Documents: #" + result.size());
}
});
由于这些操作是异步的,因此您需要让方法等到它完成。
我希望您通过此链接
Getting list of Documents into Java List using Mongo DB Async Driver
答案 1 :(得分:0)
我终于使用Java 8的CompletableFuture实现了它,如下所示:
var req = {
method: 'POST',
url: 'http://localhost:3000/api/v1/dis_generics',
headers: {
"Content-Type": "application/json"
},
data: {}
}
$http(req).success(function(data, status, header, config) {
最诚挚的问候, 钱德拉。