MongoDB聚合-如何匹配日期

gxwragnw  于 2023-06-29  发布在  Go
关注(0)|答案(1)|浏览(104)

我有这样的数据:

[
  {
    date: "2021-12-01 00:00:00.0",
  },
  {
    date: "2021-12-02 00:00:00.0",
  }
]

我正在尝试查看它是否与存储在字符串中的日期匹配。我的问题是:

db.collection.aggregate([
  {
    $addFields: {
      report_date: {
        $dateFromString: {
          dateString: "$date"
        }
      },
      report_date3: {
        $dateFromString: {
          dateString: "2021-12-01"
        }
      }
    }
  },
  {
    $match: {
      report_date: "$report_date3"
    }
  }
])

但它没有返回任何文件。如何将此字符串与日期匹配?

qv7cva1a

qv7cva1a1#

对于跨字段比较,在$match查询中需要$expr
$match查询语法与读操作查询语法相同;即$match不接受原始聚合表达式。要在$match中包含聚合表达式,请使用$expr查询表达式:

db.collection.aggregate([
  {
    $addFields: {
      report_date: {
        $dateFromString: {
          dateString: "$date"
        }
      },
      report_date3: {
        $dateFromString: {
          dateString: "2021-12-01"
        }
      }
    }
  },
  {
    $match: {
      $expr: {
        $eq: [
          "$report_date",
          "$report_date3"
        ]
      }
    }
  }
])

Sample Mongo Playground

相关问题