我有一个包含BinData的集合。以下是一个示例文档:
- _id:int
- origLength:int(未压缩大小)
- 上传日期:ISODate
- 数据:(应用程序级别的压缩数据)
我想检查一下尺寸。
我可以求和未压缩的大小,我可以看到mongo数据库的大小。但我没有明显的方法来计算数据字段的总大小。我找不到任何返回BinData大小的聚合函数。
db.passage.aggregate([{
$group: {
_id: 1,
count:{$sum : 1},
totalBytes : {$sum : "$origLength"},
compressedSize: {$sum : $XXX("$data")}}
}
]);
aggregate当前没有操作员执行此操作
这是一个使用服务器端js代码的选项。
db.eval(function() {
var len = 0;
db.passage.find({},{_id: 0, data: 1}).forEach(function(doc) {
var b = doc.data;
if (b instanceof BinData) {
len += b.length();
}
});
return len;
});
更新MongoDB 4.4将$binarySize()引入聚合框架