mongodb组每2周一次
以下是如何每周对数据进行分组:mongodb组每2周一次,mongodb,mongoid,aggregation-framework,Mongodb,Mongoid,Aggregation Framework,以下是如何每周对数据进行分组: transactions.aggregate({ [ {$match: {status: "committed"}}, {$group: { _id: { $year: "$date", $week: "$date"
transactions.aggregate({
[
{$match: {status: "committed"}},
{$group: {
_id: {
$year: "$date",
$week: "$date"
},
count: {$sum: 1},
start_date: {$min: "$date"},
end_date: {$max: "$date"}
}}
]
});
问题是,每两周分组一次,然后统计一下,怎么样
多谢各位
根据接受的答案选择正确的方式
多亏了Mzzl,每两周就可以进行一次分组。以下是完整的版本
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中减去
weeknumber mod 2
,得到一个每隔一周而不是每周变化的数字。然后,您可以尝试按此数字分组。日期字段的格式是什么?显示时它是标准化的mongodb ISODate,例如ISODate(“2013-12-25T17:00:00Z”)