gpt4 book ai didi

mongodb组每2周

转载 作者:IT老高 更新时间:2023-10-28 13:08:41 24 4
gpt4 key购买 nike

这是每周对数据进行分组的方法:

 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 中减去 weeknumber mod 2,以获得每隔一周更改一次的数字,而不是每周。然后,您可以尝试按此数字进行分组。

关于mongodb组每2周,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21187415/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com