我刚刚阅读此链接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
答案 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
}