Как выполнить соединения (аналогичные в SQL) в MongoDB? - PullRequest
0 голосов
/ 18 сентября 2018

Допустим, у нас есть два collections (пользователь и данные) и нам нужно извлечь все данные для каждого user_id из пользователей и сбора данных.

users
     {user_id: 1, username: tom, userage: 27}
     {user_id: 2, username: sam, userage: 25}

data
     {workexp: 4, skill: testing, user_id: 1}
     {workexp: 9, skill: devops, user_id: 2}

Скажите, пожалуйста, как мы можем это сделать вмонго.

1 Ответ

0 голосов
/ 18 сентября 2018

Вы можете присоединиться к коллекциям, используя оператор lookup.

Прочитайте документацию здесь: https://docs.mongodb.com/manual/reference/operator/aggregation/lookup/

Пример:

{
   $lookup:
     {
       from: <collection to join>,
       localField: <field from the input documents>,
       foreignField: <field from the documents of the "from" collection>,
       as: <output array field>
     }
}

в вашей ситуации примерно так:

db.users.aggregate([
    {
        $lookup: {
           from: "data",
           localField: "user_id",
           foreignField: "user_id",
           as: "user_data"
        }
    }])

Возвращает этот объект JSON:

{
    "_id" : ObjectId("5ba0bace2fd0cdd3eae35df6"),
    "user_id" : 1,
    "username" : "tom",
    "userage" : 27,
    "user_data" : [ 
        {
            "_id" : ObjectId("5ba0bafe2fd0cdd3eae35e16"),
            "workexp" : 4,
            "skill" : "testing",
            "user_id" : 1
        }
    ]
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...