0
我有一个每小时有一些数据的mongodb小时报表。现在我想从它得到双小时报告,这意味着它将有来自每两小时的字段“计数”和“值”的总和。如何做聚合?非常感谢!mongodb:按小时汇总汇总小时数据
之前,每小时的数据:
/* 1 */
{
"count" : 63713,
"value" : 46151,
"timestamp" : ISODate("2014-09-17T18:59:04.247+03:00"),
}
/* 2 */
{
"count" : 63743,
"value" : 48327,
"timestamp" : ISODate("2014-09-17T19:59:04.281+03:00"),
}
/* 3 */
{
"count" : 63761,
"value" : 51650,
"timestamp" : ISODate("2014-09-17T20:59:04.295+03:00"),
}
/* 4 */
{
"count" : 63756,
"value" : 52865,
"timestamp" : ISODate("2014-09-17T21:59:04.298+03:00"),
}
后,双向每小时的数据:
/* sum of documents 1&2 */
{
"count" : 117456,
"value" : 94478,
"timestamp" : ISODate("2014-09-17T18:59:04.247+03:00"),
}
/* sum of documents 3&4 */
{
"count" : 127517,
"value" : 104515,
"timestamp" : ISODate("2014-09-17T20:59:04.295+03:00"),
}
感谢您的快速响应。其实我的小时数据来自最近的24小时,而不是一整天。我想得到12个两小时的间隔数据。在这种情况下,我不需要关心一天的时间段。但这是一个很好的考虑因素,因为我可能还需要稍后汇总到日常数据。 – whitecat999 2014-09-22 10:03:24
@ whitecat999聚合框架没有两个文档之间“承载数据”的概念,或者确实存在任何“全局”变量的概念。所以,如果你正在寻找一个“开始时间”,那么我会主要建议你以错误的方式接近问题。你可能可以通过mapReduce来设计一些东西,但是它会非常混乱,而且会变慢很多。简化您的要求。 – 2014-09-22 10:56:40