Да, в MongoDB существует оператор $lookup, который позволяет выполнять операцию объединения коллекций.
Оператор $lookup позволяет нам объединять документы из текущей коллекции с документами из другой коллекции, основываясь на определенном поле, которое присутствует в обоих коллекциях.
Синтаксис оператора $lookup следующий:
db.collection.aggregate([ { $lookup: { from: "<foreignCollection>", localField: "<field in current collection>", foreignField: "<field in foreign collection>", as: "<name of the field to store the joined documents>" } } ])
- from
: указывает на имя коллекции, с которой мы хотим объединить текущую коллекцию.
- localField
: указывает на поле в текущей коллекции, по которому мы будем сопоставлять документы.
- foreignField
: указывает на поле во второй коллекции, по которому мы будем сопоставлять документы.
- as
: указывает на имя поля, в котором будет храниться объединенная информация.
Предположим, у нас есть две коллекции: "users" и "orders". Коллекция "users" содержит информацию о пользователях, а коллекция "orders" содержит информацию о заказах. Мы хотим объединить эти две коллекции, чтобы получить информацию о заказах для каждого пользователя.
Пример использования оператора $lookup для объединения коллекций "users" и "orders":
db.users.aggregate([ { $lookup: { from: "orders", localField: "userId", foreignField: "userId", as: "userOrders" } } ])
В этом примере мы используем коллекцию "users" и выполняем агрегацию, используя оператор $lookup. Мы указываем, что хотим объединить коллекцию "orders". В качестве поля для сопоставления мы используем "userId" в каждой коллекции. Результатом является новое поле "userOrders", который будет содержать объединенную информацию о заказах для каждого пользователя.
Таким образом, оператор $lookup предоставляет нам мощный инструмент для объединения коллекций в MongoDB, позволяя нам работать с данными из нескольких коллекций вместе.