用 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 被解析为匹配而不是管道。
我是 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 被解析为匹配而不是管道。