You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过explain("executionStats")获取MongoDB查询的分片数量?

如何通过explain("executionStats")获取被查询的分片总数

嘿,我来帮你搞定这个问题!当你运行db.collection.find( { ... } ).limit( 5 ).explain( "executionStats" )分析分片集群上的查询时,要找到被访问的分片总数,你需要关注这个路径下的内容:executionStats.executionStages.shards。

具体来说:

  • shards是一个对象,它的每个键都是一个被访问的分片的标识符(比如shard0000、shard0001这类命名)
  • 统计这个对象里键的数量,就是被查询的分片总数

举个简化的输出示例,帮你更直观理解:

"executionStats": {
  "executionStages": {
    "shards": {
      "shard0000": {
        "executionStats": {
          "totalDocsExamined": 100,
          // 其他分片级执行统计字段
        }
      },
      "shard0001": {
        "executionStats": {
          "totalDocsExamined": 50,
          // 其他分片级执行统计字段
        }
      }
    },
    // 其他全局执行统计字段
  }
}

在这个例子里,shards下有2个键,说明查询访问了2个分片。

另外,每个分片对应的子结构里,也会包含该分片上的totalDocsExamined等统计信息,你可以用来核对单分片的查询情况。如果你的查询带有分片键的精确匹配,shards里就只会出现对应的单个分片条目。

内容的提问来源于stack exchange,提问作者BrightHalo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 10:02:29