我在集合'foo'中有时间序列数据。每条记录都有两个字段 - foodate 和 foovalue 。为每个 foodate 生成 foovalue 的n期平均值,最小值和最大值的最有效方法是什么?
答案 0 :(得分:0)
使用聚合框架:
> db.foo.insert([{ date: 0, value: 0 }, { date: 0, value: 1 }, { date: 1, value: 2 }])
> db.foo.count()
3
> db.foo.aggregate(
{ $group: {
_id: '$date',
avg: { $avg: '$value' } }
},
{ $project: {
// Rename '_id' to 'date', include 'avg'.
date: '$_id',
_id: false,
avg: true
} },
{ $sort: { _id: 1 } })