用 concat 查找后跟匹配,return 不是后者的结果

Lookup with concat followed by match, doesn't return the result of the latter

我是 MongoDB 的新手,我正在尝试执行多个集合的聚合以验证 HTTP 请求。现在我需要查找一个集合,连接我用给定字符串查找的集合的值,并将连接的结果用于匹配相等。下面的代码是我目前拥有的:

{
  from: "Patient",
  let: {
    subject: "$subject.reference"
  },
  pipeline: [
    {
      $project: {
        concatTest: {
          $concat: [
            "Patient/",
            "$id"
          ]
        }
      }
    },
    {
      $match: {
        $expr: {
          $eq: [
            "$concatTest",
            "$$subject"
          ]
        }
      }
    }
  ],
  as: "result"
}

问题:

result数组不输出match过滤后的集合,而是输出concat的结果,如图:

result:Array
0:Object
_id:5d6d13175def3532dd905767
concatTest:"Patient/5d6d13175def3532dd905767"

我猜这是一个放置正确输出的非常简单的问题,但是我找不到解决方案。也许我不应该在管道内进行连接?或者我完全误解了管道工程?

提前致谢。

是的,这只是一个简单的问题,让 concat 包含管道的一部分,而不是在匹配项中。解决方案是将匹配写成如下:

      $match: {
        $expr: {
          $eq: [
            "$$subject",
              {$concat:["Patient/","$id"]}
          ]
        }
      }

通过这种方式,concat 被解析为匹配而不是管道。