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

Gam*_*ega 3 mongodb mongodump mongo-shell mongodb-query

有没有办法在MongoDB Shell中获取满足特定查询的所有文档的大小?

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

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

Gam*_*ega 5

这是我找到的答案:

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

应该相当准确地输出文件的字节大小。

我已经运行了两次命令。第一次,有141,215个文档,一旦被丢弃,总计约108 mb。命令的输出与磁盘大小之间的差异为787字节。

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