我正在学习以下教程:http://mongodb.github.io/mongo-java-driver/3.2/driver-async/reference/crud/。我只是试图连接到数据库,并读取我创建的一个集合,其中包含两个文档:
import com.mongodb.async.SingleResultCallback;
import com.mongodb.async.client.MongoClient;
import com.mongodb.async.client.MongoClients;
import com.mongodb.async.client.MongoCollection;
import com.mongodb.async.client.MongoDatabase;
import java.util.ArrayList;
import java.util.List;
import org.bson.Document;
public class Main {
MongoClient client = MongoClients.create();
MongoDatabase database = client.getDatabase("mydb");
public Main() {
readUsers();
}
public void readUsers() {
MongoCollection<Document> collection = database.getCollection("user");
// 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());
}
});
}
public static void main(String[] args) throws Exception {
new Main();
}
}
但我不断得到以下错误:
您需要确保main()
代码在readusers
返回如下内容之前没有完成:
...
import java.util.concurrent.Semaphore;
public class Main {
MongoClient client = MongoClients.create();
MongoDatabase database = client.getDatabase("mydb");
Semaphore semaphore = new Semaphore(0);
public Main() throws Exception {
readUsers();
semaphore.acquire();
}
public void readUsers() {
MongoCollection<Document> collection = database.getCollection("users");
// 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());
semaphore.release();
}
});
}
public static void main(String[] args) throws Exception {
new Main();
}
}
问题内容: 我有一个使用mongodb本机驱动程序的node.js应用程序。在使用节点v8.9.1将应用程序代码迁移到异步/等待的过程中,我努力寻找一种适合mongodb查询的好方法。mongodb驱动程序的主要问题是,所有查询都使用回调,其中对异步方法来说,promise函数是必需的。 备择方案: 猫鼬 -承诺不赞成使用查询,它会强制使用Schema模型,这对我的应用程序来说有点开销。 mong
我的完成处理程序有问题。下面是一个带有完成处理程序的函数,位于一个实用程序文件中: 我在视图控制器中调用它 输出清楚地表明该函数在运行该块之前没有等待完成: 我如何解决这个问题?
问题内容: 使用AlamoFire框架后,我注意到完成处理程序在主线程上运行。我想知道下面的代码是否是在完成处理程序中创建Core Data导入任务的好习惯: 问题答案: 这是一个非常好的问题。您的方法是完全有效的。但是,Alamofire实际上可以帮助您进一步简化此流程。 您的示例代码调度队列细分 在示例代码中,您将在以下调度队列之间跳转: NSURLSession分派队列 TaskDelega
异步查询能够在数据库执行查询时避免线程阻塞。这对于避免冻结胖客户端应用程序(thick-client application)的 UI 来说很有用。异步操作还能够提升 Web 应用程序的生产能力,在数据库执行查询时线程可以被空出来为其他请求服务。更多信息请查阅 C#异步编程。 警告 EF Core 不支持在同一个上下文实例上运行多并行操作。应该总是在下一个操作开始之前等待上一个操作的完成。这通常是
问题内容: 我对mongodb相当陌生,并且在尝试进行有序mongodb查询时。但是不推荐使用spring数据mongodb的sort方法。所以我用了: 我使用了此代码块。但是它没有对数据进行排序。那么,您可以选择使用任何有用的方法进行此练习吗? 问题答案: 您可以通过这种方式定义排序以忽略大小写:
问题内容: 我遇到了一个问题,其中发生了多个异步请求,这些请求从Facebook API和Firebase数据库获取图像和信息。我想执行所有异步请求,然后将从Facebook API / Firebase数据库获取的所有数据存储到一个可以快速加载的完整对象中。我为每个异步请求设置了完成处理程序,我认为这会迫使程序“等待”直到请求完成,然后继续执行程序,但这似乎对我不起作用。以下是我的尝试: 我知道