跳到主要内容

MongoDB 常用命令

统计表大小

执行 use 命令,进入到要查询的库中

use 库名
  • 库名请修改为实际要进入的库名称,例如:use mdworkflow
(() => {
const getReadableSize = b => b === 0 ? '0.0 B' :
((u=['B','kB','MB','GB','TB','PB'])[i=Math.floor(Math.log(b)/Math.log(1024))],
`${(b/Math.pow(1024,i)).toFixed(1)} ${u[i]}`);

const stats = db.getCollectionNames().map(n => {
try {
const s = db.getCollection(n).stats();
return {
ns: s.ns || `${db.getName()}.${n}`,
count: s.count || 0,
size: (s.storageSize || 0) + (s.totalIndexSize || 0)
};
} catch (e) { return null; }
}).filter(s => s && s.size > 0).sort((a,b) => b.size - a.size);

if (!stats.length) return print("No valid collection data");

const [maxNs, maxCnt] = stats.reduce(([nl, cl], s) => [
Math.max(nl, s.ns.length),
Math.max(cl, s.count.toString().length)
], ['Collection'.length, 'Documents'.length]);

const h = `Collection${' '.repeat(maxNs-10)} | Documents${' '.repeat(maxCnt-9)} | Total Size`;
print(h + '\n' + '-'.repeat(h.length));
stats.forEach(s => print(
`${s.ns.padEnd(maxNs)} | ${s.count.toString().padEnd(maxCnt)} | ${getReadableSize(s.size)}`
));
})();
  • 执行完以上命令,会统计并输出当前库中各表的大小