mongodb聚合匹配两个字段

时间:2020-08-20 16:24:51

标签: mongodb match aggregate

聚合管道中的一个阶段产生以下集合:

{
    _id : {
        airport : "SGF",
        minEffect : "security_delay",
        delayType : "arr_delay",
    }
}
{
    _id : {
        airport : "MIA",
        minEffect : "weather_delay",
        delayType : "weather_delay",
    }
}
{
...
}

我想减少集合中的文档,只获取minEffect的值等于delayed Type的值的文件。

为什么以下代码不起作用?

{$match:{"_id.delayType":"$_id.minEffect"}}

对于上面的示例,预期结果需要如下:

{
    _id : {
        airport : "MIA",
        minEffect : "weather_delay",
        delayType : "weather_delay",
    }
}
{
...
}

1 个答案:

答案 0 :(得分:2)

您可以按照以下方式使用。

{
    $match: {
      $expr: {
        $eq: [
          "$_id.minEffect",
          "$_id.delayType"
        ]
      }
    }
  }

工作Mongo playground