mongodb.countDocuments当结果集很大时速度很慢
用户收集测试数据:
'active''inactive'该字段status已索引 {status: 1}
db.users.countDocuments({status: 'active'})需要 2.91 秒
db.users.countDocuments({status: 'inactive'})需要 0.018 秒
据我所知,countDocuments使用聚合来查找和计算结果。
estimatedDocumentCount() 在这种情况下不起作用,因为需要查询过滤器
有什么改进建议吗?
我正在使用 mongoDB Atlas 创建一个 mongodb。一切似乎都很好。当我运行程序时,服务器连接成功。但是,当我尝试将数据插入集合时,它给出了错误“命令失败,错误 8000 (AtlasError)”。我读到另一篇文章说我必须使用不同的数据库名称,但这仍然不起作用。我对此很陌生,因此我们将不胜感激。这是我的代码
public class DbController2<DBObject> {
MongoClientURI uri;
MongoClient mongoClient;
MongoDatabase database;
MongoCollection<Document> collection;
public DbController2() {
uri = new MongoClientURI(
"mongodb://dbEfish:PASSWORD@cluster0-shard-00-00-klemt.mongodb.net:27017,cluster0-shard-00-01-klemt.mongodb.net:27017,cluster0-shard-00-02-klemt.mongodb.net:27017/test?ssl=true&replicaSet=Cluster0-shard-0&authSource=admin&retryWrites=true");
mongoClient = new MongoClient(uri);
database = mongoClient.getDatabase("eFishDB");
collection = database.getCollection("controlVar");
}
public Document toDBObject(String key, String[] dataPoints) {
return new Document("_id", key)
.append("Water Level", dataPoints[0])
.append("Water Temperature", dataPoints[1])
.append("pH Level", dataPoints[2])
.append("Nitrate Level", dataPoints[3])
.append("Oxygen Level", dataPoints[4])
.append("Ammonia Level", dataPoints[5])
.append("Light Intensity", dataPoints[6])
.append("Air Temperature", dataPoints[7]);
}
public void insert(String key, String[] dataPoints) …Run Code Online (Sandbox Code Playgroud)