我使用$ project运算符从Date中提取周部分,然后在聚合管道中按周进行分组.
{ $project: {
year: { $year: [ "$datetime" ] },
week: { $week: [ "$datetime" ] },
....
}
},
....
{ $group: {
_id: {
year: "$year",
week: "$week",
},
.....
}
}
Run Code Online (Sandbox Code Playgroud)
但是我用它的$周运算符总是将星期日视为一周的第一天,我们使用星期一作为我们所在地的第一天.因此,按周分组的结果对我来说总是不正确的.有什么方法可以解决这个问题,或者已知的解决方法?
mongo跟踪系统中的现有请求似乎一年多没有解决(是否真的很少需要选项?)欢迎任何可能的选择.也许有可能在javascript中创建一些自定义函数并在某处添加/替换它?
您可以使用以下管道根据您的要求修改$ week操作
[{
$project:
{
week: { $week: [ "$datetime" ] },
dayOfWeek:{$dayOfWeek:["$datetime"]}
}
},
{
$project:
{
week:{$cond:[{$eq:["$dayOfWeek",1]},{$subtract:["$week",1]},'$week']}
}
}]
Run Code Online (Sandbox Code Playgroud)
它的作用是在第一阶段它预测weekOfYear和dayOfWeek.在第二阶段,它检查dayOfWeek是否是星期日,如果是这样,那么它会修改一周到一周-1.然后,这将像周一开始一样运作.
小智 6
MongoDB中终于加入$isoWeek和$isoWeekYear3.4将开始一周的星期一.
更多信息:https://docs.mongodb.com/manual/reference/operator/aggregation/isoWeek/
| 归档时间: |
|
| 查看次数: |
5188 次 |
| 最近记录: |