Как присоединиться к mongodb со ссылками на базу данных - PullRequest
1 голос
/ 02 августа 2020

Моя база данных mon go имеет две коллекции (образцы, скопированные из результата запроса MongoDB):

Order: 
{
"_id" : ObjectId("5f242e68ceebdd59a456fee5"),
"date": ISODate("2020-07-30T22:00:00.000Z"),
"user" : {
        "$ref" : "user",
        "$id" : "user_0"
},
"item": "banana"
}

User:
{
    "_id" : "user_0",
    "login" : "login_0",
    "password" : "$2a$10$mE.qmcV0mFU5NcKh73TZx.z4ueI/.bDWbj0T1BYyqP481kGGarKLG",
    "first_name" : "John",
    "last_name" : "Kennedy",
    "email" : "jfk@gmail.com",
    "activated" : true
}

Каждый заказ принадлежит пользователю. Я помещаю внутрь каждого объекта Order ссылку на коллекцию соответствующего пользователя.

С помощью функции агрегирования MongoDB, как бы вы сделали, чтобы получить номер Order, принадлежащий пользователю, и поместить его в объект вместе с его первым имя и фамилия? Я хочу, чтобы результат выглядел примерно так:

TopUser 
{
    "firstName": "John",
    "lastName": "Kennedy",
    "nbOfOrders": 3
}

Большое спасибо.

1 Ответ

0 голосов
/ 02 августа 2020

Вы можете попробовать вот так,

[
  {
    "$lookup": {
      "from": "orders",
      "localField": "_id",
      "foreignField": "user.id",
      "as": "users"
    }
  },
  {
    $project: {
        _id:0,
      first_name: 1,
      last_name: 1,
      nbOfOrders: {
        $size: "$users"
      }
    }
  }
]

Рабочий Пн go детская площадка Примечание: удалите $ из $ref и $id

...