【问题标题】:mongoose find date using $gte and $lte for today?猫鼬今天使用 $gte 和 $lte 查找日期?
【发布时间】:2020-08-09 00:03:32
【问题描述】:
date_range: {
   from: 2020-08-08T14:46:43.171+00:00
   to: 2020-08-08T14:46:43.171+00:00
}

今天是 8/8/2020,所以我的 mongodb 集合中有上述数据,但是当我尝试使用此查询时,它不匹配

MyModel.find({
 date_range: {
  from: { $gte: new Date() },
  to: { $lte: new Date() },
 }
})

任何线索为什么它不匹配?

【问题讨论】:

    标签: node.js mongodb mongoose


    【解决方案1】:

    new Date() 以毫秒为单位返回当前时间,如果你想匹配今天的所有日期,你需要有$gte: <start-of-today>$lte: <end-of-today>

    【讨论】:

      【解决方案2】:

      任何不匹配的线索

      假设当前时间是 14:00:00。然后lte 条件失败。

      14:46:43(toDate) 不小于14:00:00

      假设当前时间是16:00:00。然后gte 条件失败。

      14.46:43(fromDate) 不大于16:00:00

      因为查询中的条件是AND

      您可以使用以下内容:

      db.collectionName.find({
        "$or": [ //OR condition
          {
            date_range: {
              from: {
                $gte: new Date()
              }
            }
          },
          {
            "date_range.to": {
              $lte: new Date()
            }
          }
        ]
      })
      

      如果您必须找到当天的数据,请使用@frozen 的答案,即start time - 00:00:00,结束时间为23:59:59.999

      使用gte 中的开始时间和lte 中的结束时间

      【讨论】:

        猜你喜欢
        • 2022-07-07
        • 2019-07-07
        • 1970-01-01
        • 2017-02-17
        • 2011-07-11
        • 1970-01-01
        • 2021-09-17
        • 2020-08-19
        • 1970-01-01
        相关资源
        最近更新 更多