当我在集合中使用$ lookup时,我得到的输出是错误的
这是输出:
{"_pipeline":[{"$project":{"fulldetails":{"$concat":["$associate_name"," ","$associate_no"]},"outlets":"$outl"}},{"$lookup":{"from":"outlets","localField":"_id","foreignField":"associate_id","as":"outl"}}],"options":{}}
这是查询
var data=Associate.aggregate([{
$project: {
"fulldetails": {
$concat: ["$associate_name", " ", "$associate_no"]
},
"outlets": "$outl"
}
}, {
$lookup: {
from: "outlets",
localField: "_id",
foreignField: "associate_id",
as: "outl"
}
}])
预先感谢
答案 0 :(得分:1)
外地字段和本地字段必须具有相同的类型,而只有$ lookup可以工作
以您的情况
本地字段为 _id
外国字段为 associate_id
如果_id是ObjectID,associate_id是ObjectID,则只有它可以工作
如果_id是String且associate_id是String,则只有它能起作用
如果_id是ObjectID,associated_id是String,则它将不起作用
如果_id为String且associate_id为ObjectID,则它将不起作用