MongoDB - 获取查询中所有文档的大小

时间:2015-11-17 21:35:49

标签: mongodb mongodb-query mongo-shell mongodump

有没有办法获得MongoDB shell中满足某个查询的所有文档的大小?

我正在创建一个工具,使用mongodump(请参阅here)和query选项将特定数据转储到外部媒体设备上。但是,我想在启动转储之前查看是否所有文档都适合外部媒体设备。这就是为什么我想获得满足查询的所有文档的大小。

我知道here所描述的Object.bsonsize方法,但它似乎只返回一个文档的大小。

1 个答案:

答案 0 :(得分:4)

以下是我找到的答案:

var cursor = db.collection.find(...); //Add your query here.
var size = 0;
cursor.forEach(
    function(doc){
        size += Object.bsonsize(doc)
    }
);
print(size);

应该非常准确地输出文档的字节大小。

我已经两次运行命令了。第一次有141 215份文件,一旦倾倒,总共约有108 mb。命令输出与磁盘大小之间的差异为787字节。

我第二次运行命令时,有35 914 179个文件,一旦被丢弃,总共大约57.8 gb。这一次,我在命令和磁盘上的实际大小之间有相同的大小。