实时Mongo聚合很慢

时间:2015-11-18 17:23:27

标签: mongodb analytics aggregation-framework dashboard

我正在开发我们的应用程序的仪表板,我想知道MongoDB对于某些查询聚合查询是否如此缓慢是正常的。我粘贴在我们的一个查询的简化版本下面:

db.data_items.aggregate([
  {'$match': 
    {
     'organization_subscription_waves.wave_id':ObjectId('5617fe6abecf0500f9c6e125')
  }, 
  {'$group': 
    {'_id': '$data_type_value_type', 'count': {'$sum': 1}}
  }
])

结果如下:

{ "_id" : "PHOTO", "count" : 76 }
{ "_id" : "MULTI_SELECT", "count" : 1607 }
{ "_id" : "TIME", "count" : 659 }
{ "_id" : "MULTIPLE_CHOICE", "count" : 78321 }
{ "_id" : "DATE", "count" : 649 }
{ "_id" : "NUMBER", "count" : 2679 }

花了两分多钟,我相信这么简单的聚合太长了。我想知道我能做些什么来提高查询效率,或者我是否必须进行一些离线优化来提高性能。

其中,我在集合上有这个索引:

{
  "v" : 1,
  "name" : "organization_subscription_waves.wave_id_1",
  "key" : {
    "organization_subscription_waves.wave_id" : 1
  },
  "ns" : "gigwalk_apps_1.data_items"
},

但我不确定它是否被使用。解释有以下输出:

{
"stages" : [
    {
        "$cursor" : {
            "query" : {
                "organization_subscription_waves.wave_id" : ObjectId("5617fe6abecf0500f9c6e125")
            },
            "fields" : {
                "data_type_value_type" : 1,
                "_id" : 0
            },
            "plan" : {
                "cursor" : "BtreeCursor ",
                "isMultiKey" : false,
                "scanAndOrder" : false,
                "indexBounds" : {
                    "organization_subscription_waves.wave_id" : [
                        [
                            ObjectId("5617fe6abecf0500f9c6e125"),
                            ObjectId("5617fe6abecf0500f9c6e125")
                        ]
                    ]
                },
                "allPlans" : [
                    {
                        "cursor" : "BtreeCursor ",
                        "isMultiKey" : false,
                        "scanAndOrder" : false,
                        "indexBounds" : {
                            "organization_subscription_waves.wave_id" : [
                                [
                                    ObjectId("5617fe6abecf0500f9c6e125"),
                                    ObjectId("5617fe6abecf0500f9c6e125")
                                ]
                            ]
                        }
                    }
                ]
            }
        }
    },
    {
        "$group" : {
            "_id" : "$data_type_value_type",
            "count" : {
                "$sum" : {
                    "$const" : 1
                }
            }
        }
    }
],
"ok" : 1
}

0 个答案:

没有答案