我有一系列 MongoDB 文档。一个示例文档是
{
createdAt: Mon Oct 12 2015 09:45:20 GMT-0700 (PDT),
year: 2015,
week: 41
}
想象一下这些跨越一年中的所有几周,并且同一周可能有很多。我想以这样的方式聚合它们,使得结果值是每周和所有之前几周的总文档数的总和。
因此,如果一年的第一周有 10 个,第二周有 20 个,结果可能是这样的
[{ week: 1, total: 10, weekTotal: 10},
{ week: 2, total: 30, weekTotal: 20}]
创建一个聚合来查找 weekTotal 非常简单。包括显示第一部分的投影
db.collection.aggregate([
{
$project: {
"createdAt": 1,
year: {$year: "$createdAt"},
week: {$week: "$createdAt"},
_id: 0
}
},
{
$group: {
_id: {year: "$year", week: "$week"},
weekTotal : { $sum : 1 }
}
},
]);
但事实证明,根据该周和之前几周的情况来总结这一点是很棘手的。