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

标签 mongodb mongodb-query bson mongo-shell mongodump

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

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

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

最佳答案

这是我找到的答案:

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。这一次,命令的大小与磁盘上的实际大小完全相同。

关于mongodb - 获取查询中所有文档的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33767460/

相关文章:

json - 操纵mongodb的bson.D输出格式

c# - .NET Core 2.0 Web API 中的 BSON

json - 计算数组中多个项目的出现次数

node.js - Mongoose 选择与填充不起作用

使用 $map 进行 MongoDB 嵌套数组搜索

azure - Cosmos Mongo API "In"数组表达式问题

java - 将 Flux<Document> 转换为 Flux<Object> 或 List<Object>

node.js - 如何在nodeJS和mongoDB中进行聚合

mongodb - 如何减少获取 mongodb 模式锁所花费的时间?

java - Spring Boot 设置 MongoDB 存储库