【问题标题】:How can I get executionStats for aggregation in MongoDB 3.4.10?如何在 MongoDB 3.4.10 中获取用于聚合的 executionStats?
【发布时间】: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 } } ]
)

但这是返回阶段 queryPlannerwinningPlanrejectedPlans 而不是 executionStats。我想以毫秒为单位获取查询执行时间。

【问题讨论】:

  • 根据mongo shell 中的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


【解决方案1】:

在 MongoDB 3.6 之前,解释 aggregate 命令仅支持默认的 queryPlanner 详细模式并忽略任何其他选项(请参阅:SERVER-19758)。

您需要将 MongoDB 服务器升级到 3.6 或更高版本才能使用 additional verbosity modesaggregate 命令。

【讨论】:

  • 如何在 MongoDB 4 中将 executionStats 模式与聚合一起使用? executionStats 模式适用于 find 查询,但不适用于 aggregation
  • @qmn1711 如果此示例不适合您,我建议发布一个包含您的环境详细信息的新问题。特别是:您使用的应用程序或驱动程序的具体版本是什么?我将首先使用 mongo shell(这是本问题中的语法)进行测试,并确保 version()db.version() 都报告 3.6 或更高版本。
  • 我测试过,它只适用于mongo shell,感谢您的洞察力!
  • @qmn1711 您最初使用的是旧版本的 mongo shell 还是替代管理 UI?
  • 我用过Robo 3T 1.2.1
猜你喜欢
  • 2017-02-16
  • 1970-01-01
  • 2017-02-12
  • 1970-01-01
  • 2019-12-29
  • 2019-10-08
  • 2021-07-01
  • 2020-03-09
  • 1970-01-01
相关资源
最近更新 更多