求可用于Shell脚本的MongoDB集合统计Bash脚本
现成的MongoDB集合统计Bash脚本
我刚好整理了一个可以直接使用的Bash脚本,完美匹配你需要的MongoDB集合统计需求,逻辑和你给出的示例代码完全一致,直接运行就能输出按大小排序的集合统计数据:
#!/bin/bash # 根据你的MongoDB配置修改连接参数,比如添加认证、指定主机端口等 MONGO_URI="mongodb://localhost:27017/your_database_name" # 执行MongoDB统计命令,核心逻辑和你提供的JS代码完全一致 mongo "$MONGO_URI" --quiet --eval ' var collectionNames = db.getCollectionNames(), stats = []; collectionNames.forEach(function (n) { stats.push(db[n].stats()); }); stats = stats.sort(function(a, b) { return b["size"] - a["size"] }); for (var c in stats) { print(stats[c]["ns"] + ": " + stats[c]["size"] + " (" + stats[c]["storageSize"] + ")"); } '
使用小贴士:
- 替换
your_database_name为你要查询的目标数据库名称 - 如果你的MongoDB需要认证,把
MONGO_URI改成带权限信息的格式,比如mongodb://username:password@localhost:27017/your_database_name - 保存脚本为
mongo_collection_stats.sh,赋予执行权限:chmod +x mongo_collection_stats.sh - 直接运行脚本就能拿到结果:
./mongo_collection_stats.sh
脚本细节说明:
--quiet参数用来屏蔽MongoDB的启动日志,只输出我们需要的统计结果- 核心逻辑就是你提供的JavaScript代码:先获取所有集合名称,拉取每个集合的统计信息,再按
size从大到小排序,最后输出集合命名空间、数据实际大小和磁盘存储大小
内容的提问来源于stack exchange,提问作者Tony
相关产品推荐
相关产品推荐

