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

时间:2014-10-15 09:50:36

标签: mongodb

我有一个包含BinData的集合。这是一个示例文档:

  • _id:int
  • origLength:int(未压缩的大小)
  • uploadDate:ISODate
  • 数据:(应用程序级别的压缩数据)

我想进行一些尺寸检查。

我能够将未压缩的大小相加,我可以看到mongo db大小。但我没有明显的方法来计算数据字段的总大小。我找不到任何返回BinData大小的聚合函数。

db.passage.aggregate([{
  $group: {
      _id: 1, 
      count:{$sum : 1}, 
      totalBytes : {$sum : "$origLength"}, 
      compressedSize: {$sum : $XXX("$data")}}
  }
]);

2 个答案:

答案 0 :(得分:0)

汇总目前没有运营商这样做 这是使用服务器端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;
});

答案 1 :(得分:0)

更新 MongoDB 4.4 将 $binarySize() 引入聚合框架