从MongoDB文档获取ID,然后从另一个文档获取其相关值

时间:2018-10-12 05:53:26

标签: mongodb mongoose mongodb-query mean-stack

我试图从一个集合(用户)的文档中获取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"
}

我只想返回实际的福利名称。

1 个答案:

答案 0 :(得分:0)

db.users.aggregate(

    // Pipeline
    [
        // Stage 1
        {
            $unwind: {
                path: "$benefitsIds"

            }
        },

        // Stage 2
        {
            $lookup: // Equality Match
            {
                from: "benefits",
                localField: "benefitsIds",
                foreignField: "_id",
                as: "benefits"
            }


        }

    ]



);