我正在开发一个简单的财务应用程序,用于跟踪收入和结果。如何使用总量计算运行总数
为了简单起见,我们假设这些都是我的一些文件:
{ "_id" : ObjectId("54adc0659413535e02fba115"), "description" : "test1", "amount" : 100, "dateEntry" : ISODate("2015-01-07T23:00:00Z") }
{ "_id" : ObjectId("54adc21a0d150c760270f99c"), "description" : "test2", "amount" : 50, "dateEntry" : ISODate("2015-01-06T23:00:00Z") }
{ "_id" : ObjectId("54b05da766341e4802b785c0"), "description" : "test3", "amount" : 11, "dateEntry" : ISODate("2015-01-09T23:00:00Z") }
{ "_id" : ObjectId("54b05db066341e4802b785c1"), "description" : "test4", "amount" : 2, "dateEntry" : ISODate("2015-01-09T23:00:00Z") }
{ "_id" : ObjectId("54b05dbb66341e4802b785c2"), "description" : "test5", "amount" : 12, "dateEntry" : ISODate("2015-01-09T23:00:00Z") }
{ "_id" : ObjectId("54b05f4ee0933a5c02398d55"), "description" : "test6", "amount" : 4, "dateEntry" : ISODate("2015-01-09T23:00:00Z") }
我现在想是画一个“平衡”的图表,基于这样的数据:
[
{ day:'2015-01-06', amount:50},
{ day:'2015-01-07', amount:150},
{ day:'2015-01-09', amount:179},
...
]
换句话说,我需要将我所有的交易按日进行分组,并且每天我需要总计我以前的所有交易(自世界之初以来)。
我已经知道如何通过一天组:
$group: {
_id: {
y: {$year:"$dateEntry"},
m: {$month:"$dateEntry"},
d: {$dayOfMonth:"$dateEntry"}
},
sum: ???
}
但我不知道怎么回去,总结所有金额。 想象一下,我需要显示每月余额报告:我应该运行31个查询,每天一个总结所有交易金额,除了下一天吗?当然可以,但不要认为这是最好的解决方案。
在此先感谢!
我不知道如何准确地编写查询,尼尔。如果我只是做了{$ sum:“$ amount”},那么只有当前的小组交易会包含在我的结果中,而我不想这么做。请仔细阅读该问题;) –
对不起。也许我无法解释我真正想要的,认真的。我不希望每天的所有金额的简单总和。我想在每天之前总结所有的数额。在我的示例中,2015-01-07将是6月1日和7月1日的金额之和,2015-01-09将是6,7,9月1月金额的总和,以此类推。 –
为什么我的问题投下来了?我认为这将是一个有趣的... –