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

如何获取MongoDB所有索引的使用情况与大小并在同一结果中输出?

同时获取MongoDB索引使用情况与大小的方法

你可以通过结合db.collection.stats()的indexSizes数据和$indexStats聚合阶段,在一次查询中同时获取两项信息。具体步骤如下:

  1. 先获取目标集合的索引大小数据并存储为变量:
const indexSizes = db.getCollection('your_collection').stats().indexSizes;

(注意替换your_collection为实际集合名)

  1. 执行聚合管道,将索引使用情况与大小数据合并:
db.getCollection('your_collection').aggregate([
  // 获取索引使用统计
  { "$indexStats": {} },
  // 将对应索引的大小添加到结果文档中
  { "$addFields": {
    "size": {
      $let: {
        vars: {
          // 将indexSizes对象转为键值对数组,匹配当前索引名对应的条目
          idxEntry: { $arrayElemAt: [
            { $objectToArray: indexSizes },
            { $indexOfArray: [
              { $objectToArray: indexSizes },
              { "k": "$name" }
            ]}
          ]}
        },
        in: "$$idxEntry.v"
      }
    }
  }}
])

结果说明

返回的每个文档会包含$indexStats提供的所有使用信息(如accesses、name、shardVersion等),同时新增size字段显示该索引的占用空间大小。

注意事项

  • 该方法要求MongoDB版本≥3.4($indexStats和$objectToArray均在3.4版本引入)
  • 如果你的环境不支持使用变量(比如某些GUI工具),可以将indexSizes的内容直接嵌入聚合管道中,但这种方式不够灵活,建议优先使用变量方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 19:20:22