使用Mongodb聚合框架的嵌套聚合子分组结果

时间:2018-09-10 22:20:43

标签: mongodb mongoose aggregation-framework mongoose-populate

我有一个数据集,其中包含从一组传感器收集的指标。 我的数据集如下:

{type: 1, display: 'foo', value: 'A'}
{type: 2, display: 'bar', value: 'B'}
{type: 2, display: 'foo', value: 'B'}

我正在尝试汇总结果并通过REST API获得一些有意义的见解。我以某种方式试图产生汇总结果:

[{
  type: 1, 
  displays: [
    {
      name: 'foo',
      count: 1
    }
  ],
  values: [
    {
      name: 'A',
      count: 1
    }
  ],
  total_count: 1
},{
  type: 2, 
  displays: [
    {
      name: 'foo',
      count: 1
    } , {
      name: 'bar',
      count: 1
    }
  ],
  values: [
    {
      name: 'B',
      count: 2
    }
  ],
  total_count: 2
}]

总结汇总结果并产生较浅的结果很简单,尽管我无法同时为typesdisplays创建嵌套计数器,但我仍在努力。 我试图使用各种聚合运算符,但没有运气。 基本上,我可以按类型分组或显示为:

db.logs.aggregate([
    {
      $group: {
        _id: {
          type: '$type',
          display: '$display'
        },
        count: { $sum: 1 }
      }
    }, {
      $group: {
      _id: '$_id.type',
      displays: {
        $push: {
          name: "$_id.display",
          count: "$count"
        }
      }
      }
    }
  ]);

我们将不胜感激任何帮助。

0 个答案:

没有答案