我正在使用mongodb聚合框架进行一些分析,我被困在这个特定的一个。
在英语中,我试图运行以下查询:
"查找给定时间范围内的平均5天计数。"
所以给定一个如下所示的数据集:
{
:_id => BSONID,
:date => ISO(DATE),
:count => 3
},
{
:_id => BSONID,
:date => ISO(DATE),
:count => 2
},
{
:_id => BSONID,
:date => ISO(DATE),
:count => 9
}
...
我想要一个结果:
[
{:_id => "2014-145", :five_day_average_count => 3},#this is the average count from 2014-145 through 2014-149
{:_id => "2014-146", :five_day_average_count => 6},#this is the average count from 2014-146 through 2014-150
{:_id => "2014-147", :five_day_average_count => 4},#this is the average count from 2014-147 through 2014-151
...
]
_id是$ year和$ dayOfYear(这可以用$ concat实现)。
我完全有能力将数据分组并将数据分成长度为5天的组。困难在于单个数据点将同时分为5组。现在我可以运行5个聚合查询,每个查询都有一个单独的分组开始日期,但我更愿意运行单个查询以节省时间。
我真诚地希望我是愚蠢的,并且会发布一个简单的解决方案。