MongoDB: 除了聚合中的 ISODate 之外,还有其他方法可以按日期匹配吗?

MongoDB: Is there another way to match by date other than ISODate in an aggregation?

我的问题比较简单。我有一组文档,看起来像这样

    {
     _id:"61f52b609f97a100092842f2"
     timestampISO:2022-01-29T11:56:14.000+00:00
    }

timestampISO 是日期类型。

有没有办法在不使用 ISODate("...") 的情况下按日期进行匹配,如 answer 所示?我尽量不使用 ISODate(''),因为我实际上想将管道保存为 Mongo 中的字符串,但这现在并不重要。

我想要这样的比赛

$match: {
   timestampISO: {
       $gte: {
          $dateFromString: {
            dateString: '2022-01-01T11:56:14.000+00:00',
          }
       },
       $lte: {
          $dateFromString: {
            dateString: '2022-01-29T11:56:14.000+00:00',
          }
       },
   }
}

这是行不通的。似乎 ISODate() 似乎是唯一的方法?这是正确的吗?

感谢您的宝贵时间。

ISODate() 只是 Mongo shell 中 new Date().

的别名

{ $dateFromString: { dateString: '2022-01-01T11:56:14.000+00:00' } } 大致相同,但是您必须使用

{
   $match: {
      $expr: {
         $gte: [
            "$timestampISO",
            { $dateFromString: { dateString: '2022-01-01T11:56:14+00:00' } }
         ]
      }
   }
}

或者更简单一点:

{ $match: 
    {$expr: {$gte: ["$timestampISO", { $toDate: '2022-01-01T11:56:14.000+00:00' } ] }}
}