这是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 }}})
这个查询给了我正确的计数,但我的数据库日益增加,查询执行时间更长。是否有其他方法可以更快地获取计数?
答案 0 :(得分:2)
正如JohnnyHK已经指出的那样,如果可能,请使用db.collection.distinct,因为它提供了leveraging indexes的可能性
所以在你的情况下db.collection.distinct('category').length
应该非常快
如果您仍然遇到性能问题,请查看
db.collection.explain().distinct('category')
查看查询的执行计划并对其执行操作或将其提供给此问题,以便我们查看您的索引是否实际使用。