$lookup в MongoDBЭтап агрегации $lookup выполняет левое внешнее соединение между двумя коллекциями в одной базе данных. Он позволяет объединить связанные документы из отдельных коллекций в один результирующий набор.
$lookup — это аналог MongoDB для операции SQL JOIN. Конкретно, он воспроизводит поведение LEFT OUTER JOIN, то есть все документы из основной коллекции возвращаются, даже если в присоединяемой коллекции нет совпадающего документа.
Этап использует четыре ключевых поля:
from — целевая коллекция для присоединенияlocalField — поле в текущей коллекции, используемое для сопоставленияforeignField — поле в целевой коллекции, используемое для сопоставленияas — имя выходного поля, где совпадающие документы хранятся в виде массиваdb.orders.aggregate([
{
$lookup: {
from: "products",
localField: "productId",
foreignField: "_id",
as: "productDetails"
}
}
])
Этот запрос присоединяет каждый документ orders к соответствующему документу из коллекции products, сохраняя результат в поле массива productDetails.
as будет содержать пустой массив — в соответствии с поведением левого внешнего соединения$lookup может заметно влиять на производительность при работе с большими коллекциями, поэтому индексирование полей соединения настоятельно рекомендуетсяЭтап агрегации $lookup выполняет left outer join, гарантируя, что все документы из первичной коллекции включены в результирующий набор, независимо от того, существует ли совпадающий документ в присоединяемой коллекции.
Новый — ещё не проверен сообществом
Вы