这是每周对数据进行分组的方法:
transactions.aggregate({
[
{$match: {status: "committed"}},
{$group: {
_id: {
$year: "$date",
$week: "$date"
},
count: {$sum: 1},
start_date: {$min: "$date"},
end_date: {$max: "$date"}
}}
]
});
问题是,每2周分组一次并获得计数如何?
谢谢你。
多亏了Mzzl,这项功能才能每2周进行一次分组。以下是完整版本。
db.transactions.aggregate([
{$match: {status: "committed"}},
{$project: {
twoweekperiod: {
$subtract: [
{$week: "$date"}, {$mod: [{$week: "$date"}, 2] }
]
},
date:1,
status:1
}},
{$group: {
_id: {
year: {$year: "$date"},
twoweek: "$twoweekperiod"
},
count: {$sum: 1},
start_date: {$min: "$date"},
end_date: {$max: "$date"}
}}
])
假设$ week包含星期数,则可以创建一个“每两周”数,然后按该数字分组。尝试这样的事情:
{
$project: {
twoweekperiod: {
$subtract: [
'$week', {$mod: ['$week', 2] }
]
}, status:1, date:1, etc...
}
}
我不知道在mongo查询中进行整数除法的方法,所以我改为weeknumber mod 2
从weeknumber中减去,以获得每隔一周而不是每周更改一次的数字。然后,您可以尝试按此数字分组。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句