【发布时间】:2013-04-17 22:52:25
【问题描述】:
示例文件:
{ time: ISODate("2013-10-10T20:55:36Z"), value: 1 }
{ time: ISODate("2013-10-10T22:43:16Z"), value: 2 }
{ time: ISODate("2013-10-11T19:12:66Z"), value: 3 }
{ time: ISODate("2013-10-11T10:15:38Z"), value: 4 }
{ time: ISODate("2013-10-12T04:15:38Z"), value: 5 }
很容易获得按日期分组的汇总结果。 但我想要的是查询返回运行总数的结果 聚合,例如:
{ time: "2013-10-10" total: 3, runningTotal: 3 }
{ time: "2013-10-11" total: 7, runningTotal: 10 }
{ time: "2013-10-12" total: 5, runningTotal: 15 }
MongoDB 聚合可以做到这一点吗?
【问题讨论】:
-
你能保持一个运行的总数吗?这将是最简单和最有效的,特别是因为数据没有改变。聚合框架是动态计算这类静态数据的一种非常昂贵的方法。
-
目前没有办法用聚合框架做到这一点。
-
@cirrus 感谢您的回答。不过我不太确定该怎么做...
-
嗯,我认为这将涉及几个聚合查询。你不能在一个命令中做到这一点。但是,通过在进行时进行计算,这仅意味着在每个条目中添加一个其他字段以跟踪运行总数。根据您的应用程序,您可以在写入数据时执行此操作,或者您可以在每天结束时运行后台任务来计算它。但这假设您正在编写数据,我不知道您的数据来自哪里。如果数据已经存在,则您必须每天运行一个查询并将其存储在其他地方。
标签: mongodb aggregation-framework mongoid cumulative-sum