获取mongoStats的Bash脚本

时间:2018-03-20 13:25:54

标签: bash mongodb shell

希望有人有一个方便的bash脚本会打到一个mongodb并获得类似下面的集合统计信息,我可以在shell脚本中使用它?

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'] + ")"); }

更新

另一个问题---希望在行前加上日期戳

"db.getCollectionNames().forEach(function (n) { var s = db[n].stats(); print('date +'%D %r %Z'''namespace=' + s['ns'] +',count=' + s['count']+',avgObjSize=' + s['avgObjSize']+',storageSize=' + s['storageSize']) })"

但我的日期代码似乎无法正常工作:(

1 个答案:

答案 0 :(得分:0)

avgObjSize

它将以CSV格式打印,您可以使用几种工具进行操作。

<强>更新

只需添加totalIndexSizedb.getCollectionNames().forEach(function (n) { var s = db[n].stats(); printjson({'namespace': s['ns'], 'size': s['size'], 'storage': s['storageSize']}) }) db.getCollectionNames().forEach(function (n) { var s = db[n].stats(); print('size=' + s['size'] +',avgObjSize=' + s['avgObjSize']) }) 以及您需要的其他键,使用输出示例编辑主要问题,以便我们可以按您想要的列进行排序。

更新2:

B