从 MongoDB 文档中获取 ID,然后从另一个文档中获取相关值
Get ID's from MongoDB document then get their related values from another
我正在尝试从集合 (Users) 中的文档中获取一组 ID,然后通过在另一个集合 (Benefits) 中查找具有该 ID 的文档来获取他们的姓名。
我尝试阅读 $lookup,但文档令人困惑,因为它没有给出真实世界的示例。
这个return是用户带来的好处,我能把握。
Users.findOne({username: req.params.username},{benefits: 1, _id: 0 }, function(err, user) {
if(err)
console.log(err);
else
res.json(user);
});
这是一个包含ID数组的用户集合示例。
{
"_id" : ObjectId("5b997cf8082be41757b6d733"),
"username" : "anonuser",
"benefitsIds" : [
ObjectId("5ba8345f1e56fe8e6caaaa07"),
ObjectId("5ba706d64e82292e72e9ae71")
]
}
现在在另一个合集中(好处)我有他们名字的好处。这是一个集合示例。
{
"_id" : ObjectId("5ba706d64e82292e72e9ae71"),
"benefit_name" : "Dental"
}
我只想return实际的利益名称。
db.users.aggregate(
// Pipeline
[
// Stage 1
{
$unwind: {
path: "$benefitsIds"
}
},
// Stage 2
{
$lookup: // Equality Match
{
from: "benefits",
localField: "benefitsIds",
foreignField: "_id",
as: "benefits"
}
}
]
);
我正在尝试从集合 (Users) 中的文档中获取一组 ID,然后通过在另一个集合 (Benefits) 中查找具有该 ID 的文档来获取他们的姓名。
我尝试阅读 $lookup,但文档令人困惑,因为它没有给出真实世界的示例。
这个return是用户带来的好处,我能把握。
Users.findOne({username: req.params.username},{benefits: 1, _id: 0 }, function(err, user) {
if(err)
console.log(err);
else
res.json(user);
});
这是一个包含ID数组的用户集合示例。
{
"_id" : ObjectId("5b997cf8082be41757b6d733"),
"username" : "anonuser",
"benefitsIds" : [
ObjectId("5ba8345f1e56fe8e6caaaa07"),
ObjectId("5ba706d64e82292e72e9ae71")
]
}
现在在另一个合集中(好处)我有他们名字的好处。这是一个集合示例。
{
"_id" : ObjectId("5ba706d64e82292e72e9ae71"),
"benefit_name" : "Dental"
}
我只想return实际的利益名称。
db.users.aggregate(
// Pipeline
[
// Stage 1
{
$unwind: {
path: "$benefitsIds"
}
},
// Stage 2
{
$lookup: // Equality Match
{
from: "benefits",
localField: "benefitsIds",
foreignField: "_id",
as: "benefits"
}
}
]
);