计算mongoDB

时间:2016-07-24 01:56:09

标签: mongodb

这是mongoDB中的文档结构

{ "_id" :ObjectId("9elesdf3lk3jppefll34d210"), "category" :"data1",product:'data'}
{ "_id" :ObjectId("9elesdf3lk3jppefll34d211"), "category" : "data2",product:'data'}
{ "_id" :ObjectId("9elesdf3lk3jppefll34d211"), "category" : "data1",product:'data' }

其中category被编入索引。我想对category字段进行明确计算。

目前我正在使用以下代码来计算

db.collection.aggregate( 
   {$group : {_id : "$category"} }, 
   {$group: {_id:1, count: {$sum : 1 }}})

这个查询给了我正确的计数,但我的数据库日益增加,查询执行时间更长。是否有其他方法可以更快地获取计数?

1 个答案:

答案 0 :(得分:2)

正如JohnnyHK已经指出的那样,如果可能,请使用db.collection.distinct,因为它提供了leveraging indexes的可能性

所以在你的情况下db.collection.distinct('category').length应该非常快 如果您仍然遇到性能问题,请查看

db.collection.explain().distinct('category')  

查看查询的执行计划并对其执行操作或将其提供给此问题,以便我们查看您的索引是否实际使用。