如何在MongoDB聚合框架中迭代和计算数组中的值?

时间:2014-06-17 11:33:43

标签: mongodb mongodb-query aggregation-framework

我正在用MongoDB编写一个聚合管道。管道有几个阶段,例如Match,然后是Project,Group,Match和Sort。

在管道的这一点,我有以下形式的数据:

name : "Bob"
values : [{date: ISODate("2014-01-01T00:00:00Z"), count: 12},
          {date: ISODate("2014-01-04T00:00:00Z"), count: 50},
          {date: ISODate("2014-02-15T00:00:00Z"), count: 8},
         ]

请注意 date 字段已排序。

问题是如何在MongoDB聚合框架内计算相对于排序数组中前一个的计数值(组密钥为" name")。

我想将上述文档转换为计算相对值:

name : "Bob"
values : [{date: ISODate("2014-01-01T00:00:00Z"), count: 12}, // 12 = 12 - 0
          {date: ISODate("2014-01-04T00:00:00Z"), count: 38}, // 38 = 50 - 12 
          {date: ISODate("2014-02-15T00:00:00Z"), count: -30},// -30 = 8 - 38
         ]

目的是展开数组,并按日期分组。

我知道可以使用map-reduce来实现,但我更愿意在聚合框架内完成。

提前致谢!

0 个答案:

没有答案