Mongodb 如何在聚合管道的$match块中使用$$NOW

Mongodb 如何在聚合管道的$match块中使用$$NOW,mongodb,mongodb-query,Mongodb,Mongodb Query,给定添加到采集样本的文档,如下所示: db.sample.insert({"activeOn":ISODate("2000-01-01")}) 我认为我应该能够将该文档与以下聚合匹配 db.sample.aggregate([{"$match":{"activeOn":{"$lte":"$$NOW"}}}]) 但没有找到任何文件。 我使用的是MongoDB版本4.2.3 关于在$match块中使用$$NOW系统变量,我缺少什么?文档: $match查询语法与读取操作查询语法相同;i、 e.$

给定添加到采集样本的文档,如下所示:

db.sample.insert({"activeOn":ISODate("2000-01-01")})
我认为我应该能够将该文档与以下聚合匹配

db.sample.aggregate([{"$match":{"activeOn":{"$lte":"$$NOW"}}}])
但没有找到任何文件。 我使用的是MongoDB版本4.2.3

关于在$match块中使用$$NOW系统变量,我缺少什么?

文档:

$match查询语法与读取操作查询语法相同;i、 e.$match不接受原始聚合表达式。要在$match中包含聚合表达式,请使用$expr查询表达式:

这是一个吗?是,因为它是一个系统变量:

表达式可以包括字段路径、文字、系统变量、表达式对象和表达式运算符。表达式可以嵌套

所以我们所要做的就是这样使用:

从文档中:

$match查询语法与读取操作查询语法相同;i、 e.$match不接受原始聚合表达式。要在$match中包含聚合表达式,请使用$expr查询表达式:

这是一个吗?是,因为它是一个系统变量:

表达式可以包括字段路径、文字、系统变量、表达式对象和表达式运算符。表达式可以嵌套

所以我们所要做的就是这样使用:

db.sample.aggregate([
  {
    "$match": {
      $expr: {
        $lte: [
          "$activeOn",
          "$$NOW"
        ]
      }
    }
  }
])