MongoDB Aggregation,有没有办法从聚合游标中获取 executionStats?

标签 mongodb

我正在使用 MongoDB 3.0.4,并且我有一个包含我想要聚合的数据的数据库。问题是,它需要的时间比它应该的要长。我做了功课(至少我猜),我看到了函数 explain() 和很多关于聚合和索引优化的技巧,但即便如此,我仍然怀疑。

最让我烦恼的是我不能在聚合光标上正确使用 explain() 函数。当然,您可以直接将选项传递给聚合函数,但它不允许您更改详细程度。

我可以使用 find().explain("executionStats")。有用。我还使用了强制聚合返回游标的选项。但是我无法以以下形式做任何事情:

db.coll.aggregate( ... { cursor : { batchSize : 0}}).explain("executionStats")

var a = db.coll.aggregate( ... { cursor : { batchSize : 0}})
a.explain("executionStats")

另一方面:

db.coll.explain("executionStats").aggregate( ... )

有效,但使用了错误的详细程度,我无法获得我想要的信息...

所以,实际的查询是:

db.pmsi.aggregate([
{ $match : { $GHM_Obtenu : { $in : ["040M51", "04M052"] } } },
{ $project : { "_id" : 0, "$GHM_Obtenu" : 1 } },
{ $group : {
    _id : { "$GHM_Obtenu" },
    count : { $sum : 1 } }
}
],{
    cursor : { batchSize : 0 }
})

“GHM_Obtenu”字段中有一个索引供那些想知道的人使用。

无论如何,问题仍然存在: 有没有办法从聚合请求中获取 executionStats

感谢您抽出宝贵时间阅读我的问题,希望我没有遗漏一些太明显的问题。

干杯!

最佳答案

我在 3.4 版上找到了一种方法。我使用了 db.setProfilingLevel(2) 然后我在 system.profile() 集合中得到了我需要的统计数据。

这是我发现在较新版本上通过 explain("executionStats") 获得诸如“docsExamined”之类的唯一方法。

关于MongoDB Aggregation,有没有办法从聚合游标中获取 executionStats?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31970636/

相关文章:

c# - 更新复杂类型而不换行

C# IOptions 无法将我的对象隐式转换为接口(interface)以将其注入(inject)我的服务 AddSingleton

java - Java中聚合$cond if条件实现

mongodb - MongoDB中如何获取结果值范围

mongodb - 错误 : MongoDB: unknown version: mountain_lion

node.js - mongoose 7.0.3 使用运算符 $and 严格搜索日期

MongoDB 聚合 - 在单个查询中以 2 种方式分组

mongodb 副本集新成员未显示 EC2 上正确的磁盘使用情况

php - 如何从 mongoDB 集合中的特定行(例如第 6 行)获取数据?

node.js - 无法使用 nodejs 连接到本地 mongodb 服务器