【发布时间】:2023-03-09 04:25:02
【问题描述】:
我有两个集合,call 和 contact。
我想加入他们并在通话记录中显示联系人姓名。下面的代码是我试过的。
ps。当我将"d.v":"$mobile" 更改为"d.v":"some number" 时,它可以工作,但是当我使用变量时,我的问题出在哪里?
{
from: 'contact',
let: {"mobile":"$user"},
pipeline:[
{
"$project":{
d:{$objectToArray:"$data"},
doc:"$$ROOT",
}
},
{
"$unwind":{
path: "$d",
preserveNullAndEmptyArrays: true
}
},
{
"$match":{
"d.v":"$mobile"
}
},
],
as: 'name'
}
【问题讨论】:
-
对 let
"$$mobile"中的声明变量使用双精度$$。但是您必须使用$expr条件来匹配内部字段。$match: { $expr: { $eq: ["$$mobile", "$d.v"] } } -
@turivishal 你是对的,我错了,非常感谢
标签: mongodb mongodb-query aggregate