【发布时间】:2021-08-08 11:17:35
【问题描述】:
我想加入两个 MongoDB 集合。如果 _id 和 creatorId 匹配,我想加入他们。这就是我所做的。
User.aggregate([
{
$lookup:
{
from: "traveladds",
let: { personalId: "$_id"},
pipeline: [
{ $match:
{ $expr:
[
{ $eq: [ "$creatorId", "$$personalId" ] },
]
}
}
],
as: "stockdata"
}
},
]).exec((err, result) => {
if(err){
res.send(err)
}
if(result){
res.send({
error: false,
data: result,
})
}
})
但是当我这样做时,traveladds-collection 中的所有文档都存储在所有用户的 stockdata 中。
用户收藏:
"_id": "609bc1b9bbc4ff184194c20f",
"homeCountry": "",
"birthdate": "",
"email": "",
"password": "",
"firstName": "",
"lastName": "",
"__v": 0,
"about": "",
"gender": "",
Traveladds 集合:
"{
"_id": "609bc1fdbbc4ff184194c210",
"title": "",
"destination": "",
"description": "",
"minbudget": ,
"maxbudget": ,
"startdate": "",
"enddate": "",
"creatorId": "609bc1b9bbc4ff184194c20f",
"creatorName": "",
"createdAt": "",
"updatedAt": "",
"__v": 0
},
结果如下:
data": [
{
"_id": "609bc1b9bbc4ff184194c20f",
"homeCountry": "",
"birthdate": "",
"email": "",
"password": "",
"firstName": "",
"lastName": "",
"__v": 0,
"about": "",
"gender": "",
"stockdata": [
{
"_id": "609bc1fdbbc4ff184194c210",
"title": "",
"destination": "",
"description": "",
"minbudget": ,
"maxbudget": ,
"startdate": "",
"enddate": "",
"creatorId": "609bc1b9bbc4ff184194c20f",
"creatorName": "",
"createdAt": "",
"updatedAt": "",
"__v": 0
},
{
"_id": "609eb5f401c77217984e4a78",
"title": "",
"destination": "",
"description": "",
"minbudget": ,
"maxbudget": ,
"startdate": "",
"enddate": "",
"creatorId": "609e9bb378336c21581cd132",
"creatorName": "",
"createdAt": "",
"updatedAt": "",
"__v": 0
},
{
"_id": "60a216cfd43c8e1e375cf0a8",
"title": "",
"destination": "",
"description": "",
"minbudget": ,
"maxbudget": ,
"startdate": "",
"enddate": "",
"creatorId": "609e39572c60480de0fd6ef1",
"creatorName": "",
"createdAt": "",
"updatedAt": "",
"__v": 0
},
]
},
如您所见,即使存在 creatorId != _id 它也会显示在 stockdata 中。并且这三个都出现在所有用户中。
有人可以告诉我该怎么做吗? 提前致谢,祝您有美好的一天。
更新: 这与下面的答案结合使用!
personalId: {$toString: "$_id"}
【问题讨论】:
-
你能不能把我们俩收藏起来
-
您好,我添加了一些图片,这是您要的吗? :)
-
最好不要发布任何图片,您可以编辑问题并将您的收藏更新为 sn-ps 它!
-
希望这会更好!
标签: mongodb collections lookup