mongodb聚合匹配两个字段

问题描述

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

{
    _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",}
}
{
...
}

解决方法

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

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

工作Mongo playground

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...