在 mongodb 聚合中匹配多个 $eq 条件

问题描述 投票:0回答:0

我有一个 mongodb 查询,我正在尝试使用匹配运算符将两个不同的日期匹配到“createdAt”字段。

{
  $match: {
    $expr: {
      $and: [
        {
          $eq: [
            {
              $dateFromParts: {
                'month': { $month: '$createdAt' },
                'year': { $year: '$createdAt' }
              }
            },
            {
              $dateFromParts: {
                'month': { $month: prevMonth },
                'year': { $year: prevMonth }
              }
            }
          ],
        },
        {
          $eq: [
            {
              $dateFromParts: {
                'month': { $month: '$createdAt' },
                'year': { $year: '$createdAt' }
              }
            },
            {
              $dateFromParts: {
                'month': { $month: lastMonth },
                'year': { $year: lastMonth }
              }
            }
          ]
        }
      ]
    }
  }
}

当我这样做时,返回一个空数组。如果我删除 $and 运算符并且只匹配上面使用的两个 $eq 运算符表达式中的任何一个,我会得到一个填充数组。

My question is quite literally the same as Match multiple conditions in an aggregate under expressions ,唯一的区别是他们查询了 $lt 与 $eq 配对。我的哪里有两个 $eq 查询来匹配 $prevMonth 和 $lastMonth 变量。

javascript mongodb aggregate
© www.soinside.com 2019 - 2024. All rights reserved.