mongodb组每2周一次

尤多·艾哈迈德·迪波内哥罗(Yudho Ahmad Diponegoro)

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

 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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章