猫鼬| 如何根据星期几获取所有文件

约尼·梅耶(Yoni Mayer)

我正在尝试找出最好的方法来获取与一周中给定日期匹配的所有文档

例如,如果这是我的数据库的样子:

{name: "first", created: ISODate("2020-07-16T14:47:21.065+0000")},
{name: "second", created: ISODate("2020-07-23T14:47:21.065+0000")},
{name: "third", created: ISODate("2020-07-30T14:47:21.065+0000")},
{name: "forth", created: ISODate("2020-07-31T14:47:21.065+0000")}

我想获取在星期四创建的所有文档(这是前三个文档)。

我该如何实现?

还可以获取一周中特定日期和特定时间的所有文档吗?(例如:在星期四08:00-09:00之间创建的所有文档)

汤姆·斯拉伯特

您可以使用$ dayOfWeek$ hour之类的运算符进行聚合来轻松实现此目标如下所示:

db.collection.aggregate([
  {
    $match: {
      $expr: {
        $and: [
          {
            $eq: [
              {
                $hour: "$created"
              },
              8/** only hour 8*/
              
            ]
          },
          {
            $eq: [
              {
                "$dayOfWeek": "$created"
              },
              5/**thursday*/
              
            ]
          }
        ]
      }
    }
  }
])

蒙哥运动场

该查询将匹配星期四8-9之间的所有文档。请注意,这不仅是过去一周,而且是所有以前的日期。如果您希望它在某个范围内(即仅当前星期),则需要向查询中添加另一个条件。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章