Mongodb 慢计数文件

Mongodb 慢计数文件,mongodb,mongoose,mongodb-query,mongodb-atlas,Mongodb,Mongoose,Mongodb Query,Mongodb Atlas,所以我们有一个小问题 countDocuments 它们似乎比.count()函数慢 我想知道如何加快速度 我正在运行的查询是 query = { location:{ $geoWithin:{ $centerSphere: [ [ parseFloat(docs.location.coordinates[0]), parseFloat(docs.location.coordinates[1])], 5 / 6378.1] } } }; 我正在运行的脚本 var dquery = Q.cou

所以我们有一个小问题

countDocuments
它们似乎比
.count()
函数慢

我想知道如何加快速度

我正在运行的查询是

query = { location:{ $geoWithin:{ $centerSphere: [ [ parseFloat(docs.location.coordinates[0]), parseFloat(docs.location.coordinates[1])], 5 / 6378.1] } } };
我正在运行的脚本

var dquery = Q.countDocuments(query).exec(function(err, count){

(Then I need to run the following)

 if(count > 0 ){
                          var random = Math.floor(Math.random() * count);
                          //START ADQUERY
                          console.error(count);
                          console.error(random);
                          var aquery = A.findOne(query).skip(random);
}

});
               
运行第一部分大约需要3-4秒,因为我们正在将响应注入到

stream.on
但是,由于查询速度的原因,它似乎会使流崩溃


我想知道是否有人能解决这个问题。

count
查看集合元数据并提供估计结果

countDocuments
执行查询并提供准确的结果

countDocuments
的性能与具有相同参数的
find
的性能类似


您需要有适当的索引,等等,与查找相同。

但15秒后返回countDocuments,这需要很长时间。如果您有大量数据,它必须扫描所有文档以匹配您的查询,索引将大大加快速度,代价是损失一些写性能,但与查询性能的提高相比可以忽略不计。尝试在查询结束时添加
.explain()
,它将输出运行查询所需的操作。