mongodb中的慢速$group

mongodb中的慢速$group,mongodb,aggregation-framework,nosql,Mongodb,Aggregation Framework,Nosql,我正在使用$group从mongodb获取数据。我已将我的查询修改为 db.mydata.aggregate([{ $match: {"CreatedOn": {$lte: ISODate("2015-10-27T03:45:09Z"), "$gte": ISODate("2015-09-09T07:37:27.526Z")}} }, {"$group" : { "_id" : "$myIP" , "total" : { "$sum" : "$SuccessCount"}}}, { "$pr

我正在使用$group从mongodb获取数据。我已将我的查询修改为

db.mydata.aggregate([{ $match: {"CreatedOn": {$lte: ISODate("2015-10-27T03:45:09Z"),
"$gte":  ISODate("2015-09-09T07:37:27.526Z")}} },
{"$group" : { "_id" : "$myIP" , "total" : { "$sum" : "$SuccessCount"}}}, 
{ "$project" : { "myIP" : "$_id" , "_id" : 0 , "Total" : "$total"}}, 
{ "$sort" : { "Total" : -1}}, { "$limit" : 10}])
但即使对于少量数据,执行也需要2分钟以上的时间。我已经为CreatedOn创建了索引。我还为myIP创建了索引

我有像这样的文档结构

{ "_id" : ObjectId("55d33d7045cedc287ed840a3"),
"myIP" : "10.10.10.1","SuccessCount" : 1,
"CreatedOn":ISODate("2015-10-27T03:45:09Z")
 }

我想要所有myIP的成功计数,最大值在顶部。

将排序阶段放在组阶段之前应该会改善这种情况。我已经将日期范围放在较小的位置,这只有1000万条记录。我们是否有其他工作,而不是使用小组?因为我测试了唯一一个组正在创建问题。请检查您的索引覆盖率:这是一个关于结果的开始:@sangita Order matters。所以请像这样设置管道:
$match->$sort->$group
@Markus W Mahlberg:当我做$match->$sort->$group时,大约需要7分钟,但是$match->$group->$sort需要2.5分钟。因为2.5分钟是在UI上加载数据的重要时间,所以我的工作就是减少它。请在这方面帮助我。