mongodb 计数与使用计数查找

sou*_*odd 5 mongodb nosql

我正在对 mongo(版本 2.4 和 3.2)集合中的文档进行计数。馆藏很大,3821085个文档。我需要用引用来计算所有文档_id。我尝试了两种不同的查询:

db.SampleCollection.find({"field._id" : ObjectId("UUID")}).count() db.SampleCollection.count({"field._id" : ObjectId("UUID")})

此查询需要很长时间。太多时间我没有让它完成,超过 5 分钟,我害怕并杀死它。

对于此集合field._id不是索引。我没有相关信息可以在此查询中使用索引。

有没有更好的方法来计算 mongo 中的文档。

更新

我知道我需要一个关于该字段的索引field._id。如果我这样做有其做法将在一个大集合更好地履行该领域的指数db.SampleCollection.find(...).count()db.SampleCollection.count(...)?或者两者之间没有区别?

Dan*_*one 7

在您的场景中,您应该有一个索引。

索引

索引支持在 MongoDB 中高效执行查询。如果没有索引,MongoDB 必须执行集合扫描,即扫描集合中的每个文档,以选择那些与查询语句匹配的文档。

更新:

现在提出的问题有所不同。是不是collection.find({}).count()更快collection.count()呢?

根据 MongoDB 文档:

db.collection.count()

count() 等效于 db.collection.find(query).count() 构造。