【发布时间】:2016-02-08 06:08:59
【问题描述】:
我在 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 }
}
},
]);
但要根据那一周和之前的那几周来计算总和是很棘手的。
【问题讨论】:
标签: mongodb mapreduce mongodb-query aggregation-framework