我试图从集合中的文档(用户)中获取一个id数组,然后通过在另一个集合中找到带有该id的文档(福利)来获取他们的名字。
我试过在$lookup上阅读,但是文档内容令人困惑,因为它没有给出一个真实的例子。
这将返回用户的好处,我可以理解这一点。
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"
}我只想拿回实际的福利名。
发布于 2018-10-12 14:35:19
db.users.aggregate(
// Pipeline
[
// Stage 1
{
$unwind: {
path: "$benefitsIds"
}
},
// Stage 2
{
$lookup: // Equality Match
{
from: "benefits",
localField: "benefitsIds",
foreignField: "_id",
as: "benefits"
}
}
]
);https://stackoverflow.com/questions/52773074
复制相似问题