我正在用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来实现,但我更愿意在聚合框架内完成。
提前致谢!