【发布时间】:2014-08-12 23:06:42
【问题描述】:
我的任务是为 MongoDB 中相当大的一组文档生成日、周、月和年的平均值。
所有作业都有一个created 字段,我需要基于outputs 数组的平均值...
这是文档的样子:
{
__v: 0,
_id: ObjectId("535837911393fd0200d8e1eb"),
created: ISODate("2014-04-23T21:58:41.446Z"),
output: [
{
ref: {
img: false
},
type: "image/png",
methods: [
{
options: {
height: 200,
width: 200
},
method: "resize"
}
]
},
{
ref: {
img: false
},
type: "image/png",
methods: [
{
options: {
height: 400,
width: 400
},
method: "resize"
}
]
}
]
}
这是我当前脚本的样子:
JobModel.aggregate([
{
$unwind: '$output'
},
{
$group: {
_id: { $dayOfYear: '$created' },
day: { $sum: 1 }
}
},
{
$group: {
_id: null,
avgDay: { $avg: '$day' }
}
},
{
$project: {
_id: 0,
average: {
day: '$avgDay'
}
}
}
],
function(err, data) {
if (err) {
console.log(err);
return;
}
res.send(data);
next();
});
我似乎无法找出正确的顺序。有什么建议吗?
【问题讨论】:
标签: javascript node.js mongodb mongoose aggregation-framework