Mongo聚合:对BinData字段的字节数求和



我有一个包含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()引入聚合框架

最新更新