Получить идентификаторы из документа MongoDB, а затем получить связанные значения из другого - PullRequest
0 голосов
/ 12 октября 2018

Я пытаюсь получить массив идентификаторов из документа в коллекции (Пользователи), а затем получить их имена, найдя документ с этим идентификатором в другой коллекции (Преимущества).

У меня естьпопытался прочитать на $ lookup, но документация сбивает с толку, поскольку не дает реального примера.

Это возвращает выгоду от пользователя, которую я могу понять.

Users.findOne({username: req.params.username},{benefits: 1, _id: 0 }, function(err, user) {
 if(err)
   console.log(err);
 else
   res.json(user);
});

Это пример коллекции пользователя, который содержит массив идентификаторов.

{
    "_id" : ObjectId("5b997cf8082be41757b6d733"),
    "username" : "anonuser",
    "benefitsIds" : [ 
        ObjectId("5ba8345f1e56fe8e6caaaa07"), 
        ObjectId("5ba706d64e82292e72e9ae71")
    ]
}

Теперь в другой коллекции (Преимущества) у меня есть преимущества с их именами.Это пример коллекции.

{
    "_id" : ObjectId("5ba706d64e82292e72e9ae71"),
    "benefit_name" : "Dental"
}

Я просто хочу вернуть фактическое название пособия.

1 Ответ

0 голосов
/ 12 октября 2018
db.users.aggregate(

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

            }
        },

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


        }

    ]



);
...