希望有人有一个方便的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']) })"
但我的日期代码似乎无法正常工作:(
答案 0 :(得分:0)
avgObjSize
它将以CSV格式打印,您可以使用几种工具进行操作。
<强>更新强>:
只需添加totalIndexSize
,db.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