首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mongo find下周二

Mongo find下周二
EN

Stack Overflow用户
提问于 2021-09-13 13:59:19
回答 1查看 39关注 0票数 0

我试着从今天开始安排下个星期二( ISO周的第二天)。我通过以下运算符获得了全局var "$$NOW"的当前日期和ISO星期的当前日期:{ $dayOfWeek: "$$NOW" }。但我想不出任何方法来获取MongoDB-Aggregation中下个星期二的日期。

例如,我有以下输入:

代码语言:javascript
复制
"$$NOW" which is => new Date("2021-09-13T16:20:00Z") // Today Monday

现在我想要下个星期二:

代码语言:javascript
复制
new Date("2021-09-14T16:20:00Z") // coming Tuesday

这很容易,但如果有一个星期的轮班,它就会变得有点困难。如果现在的日期是:

代码语言:javascript
复制
"$$NOW" which is => new Date("2021-09-16T16:20:00Z") // coming Thursday would be Today

下个星期二是:

代码语言:javascript
复制
new Date("2021-09-21T16:20:00Z") // Tuesday next week

所以我总是想在今天之后的下一个星期二。

最后,我想创建一个mongo管道,如下所示:

代码语言:javascript
复制
[{
    $addFields: {
        "nextTuesday": new Date(" the date of the next Tuesday ")
    }
}]

如果有任何帮助,我会非常高兴!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-20 10:25:10

MongoDB有一个$dayOfWeek运算符,它返回1表示周日,7表示周六。

在这个范围内,找到一周中想要的日期的公式是:

代码语言:javascript
复制
(((desired_day + 6) - current_day) modulo 7) + 1

在MongoDB聚合语言中,如下所示:

代码语言:javascript
复制
{$addFields:{
    nextTuesday:{
     $toDate:{
      $add:[
         "$$NOW",
         {$multiply:[
             86400000,
             {$add:[
                  1,
                  {$mod:[
                     {$subtract:[
                           9,
                           {$dayOfWeek:"$$NOW"}
                     ]},
                     7
                  ]}
             ]}
         ]}
      ]
     }
    }
}}

Playground

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69163989

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档