解释聚合框架

时间:2014-09-03 13:34:15

标签: mongodb aggregation-framework

我刚刚阅读此链接Mongodb Explain for Aggregation framework但未解释我的问题

我想要检索有关聚合的信息,例如db.coll.find({bla:foo}).explain()

我试过

db.coll.aggregate([
        my-op
],
{
explain: true
}) 

结果不是解释,而是查询数据库。

我也试过

db.runCommand({
        aggregate: "mycoll",
        pipeline: [
        my- op
        ],
        explain: true
    })

我使用此命令检索信息,但我没有毫秒,nscannedObjects等...

我使用的是mongoDb 2.6.2

2 个答案:

答案 0 :(得分:3)

聚合不像传统查询一样运行,您无法对其进行解释。它们实际上被归类为命令,虽然它们使用索引,但您无法实时了解它们的执行方式。

您最好的选择是获取聚合的$ match部分并将其作为查询运行,并使用explain来弄清楚索引的执行情况并了解nscanned。

答案 1 :(得分:1)

我不确定你是如何设法无法获得解释信息的。在2.6.x中,此信息可用,you can explain汇总结果:

db.orders.aggregate([
   # put your whole aggregation query
], {
   explain: true
})

这给了我类似的东西:

{
    "stages" : [
        {
            "$cursor" : {
                "query" : {
                    "a" : 1
                },
                "queryPlanner" : {
                    "plannerVersion" : 1,
                    "namespace" : "test.a",
                    "indexFilterSet" : false,
                    "parsedQuery" : {
                        "a" : {
                            "$eq" : 1
                        }
                    },
                    "winningPlan" : {
                        "stage" : "COLLSCAN",
                        "filter" : {
                            "a" : {
                                "$eq" : 1
                            }
                        },
                        "direction" : "forward"
                    },
                    "rejectedPlans" : [ ]
                }
            }
        }
    ],
    "ok" : 1
}