【发布时间】:2018-06-30 14:30:38
【问题描述】:
如何获取 MongoDB 聚合查询执行时间?
我试过了:
db.collection.explain("executionStats").aggregate(
[ { '$match': { '$and': [ { 'meta.client_id': { '$eq': 1 } },
{ 'meta.is_deleted': { '$ne': 1 } } ] } },
{ '$group':
{ _id: '$Plant',
value: { '$sum': 1 } } },
{ '$sort': { _id: 1 } } ]
)
但这是返回阶段 queryPlanner、winningPlan 和 rejectedPlans 而不是 executionStats。我想以毫秒为单位获取查询执行时间。
【问题讨论】:
-
根据
mongoshell 中的version()和db.version(),您的MongoDB shell 和服务器的具体版本是什么?executionStats解释详细模式仅支持 MongoDB 3.6 或更高版本中的聚合查询。 -
这是 3.4.10 的 mongo shell。但是对于这个版本的 db.collection.find().explain("executionStats"),executionStats 工作得非常好。
-
是的,但
find是与aggregate不同的命令;-)。在 MongoDB 3.6 之前,对于aggregate命令的解释仅支持默认的queryPlanner详细程度并忽略任何其他选项(请参阅:SERVER-19758)。
标签: mongodb aggregation-framework