修改:这个问题不是关于vanilla MongoDB show collections
,而是关于mongo-hacker
。请参阅已接受的答案和评论。
使用Mongo DB 3.2 + WiredTiger,show collections
显示两种尺寸:s1 / s2。
show collections
coll_1 → 10.361MB / 1.289MB
coll_2 → 0.000MB / 0.004MB
coll_3 → 0.000MB / 0.016MB
coll_4 → 0.001MB / 0.031MB
我的猜测是:
这是对的吗?我无法在docs中找到任何引用。
答案 0 :(得分:5)
你在使用mongo-hacker吗?默认情况下,在MongoDB 3.2.11中,show collections
根本不显示任何大小信息。
mongo-hacker提供的大小信息是从db.collection.stats().size
的输出中获得的,它显示了集合的总未压缩大小(没有索引)和db.collection.stats().storageSize
它显示了物理存储大小。如果您在WiredTiger中启用压缩,则storageSize
通常会小于size
。
您可以在此处找到相关的源代码:https://github.com/TylerBrock/mongo-hacker/blob/0.0.13/hacks/show.js#L57-L72
答案 1 :(得分:2)
您可以使用以下查询获取每个集合的大小:
driver.find_elements_by_xpath('//a[@class="author"]//*[local-name()="svg"]')
答案 2 :(得分:1)
与@kalaivani的答案非常相似,我只是对其进行了重构,以便于(对我而言)更容易理解,并可以用GB打印
// Get collection names
var collectionNames = db.getCollectionNames()
var col_stats = [];
// Get stats for every collections
collectionNames.forEach(function (n) {
col_stats.push(db.getCollection(n).stats());
});
// Print
for (var item of col_stats) {
print(`${item['ns']} | size: ${item['size']}
(${(item['size']/1073741824).toFixed(2)} GB) | storageSize: ${item['storageSize']}
(${(item['storageSize']/1073741824).toFixed(2)} GB)`);
}