Чтобы объединить коллекцию orders с коллекцией customers в MongoDB, мы используем конвейер агрегации с двумя ключевыми этапами: $lookup и $unwind.
$lookup — выполняет объединение между коллекциями$unwind — разворачивает результирующий массив в один вложенный объектdb.orders.aggregate([
{
$lookup: {
from: "customers", // целевая коллекция для объединения
localField: "customerId", // поле в orders
foreignField: "_id", // соответствующее поле в customers
as: "customerInfo" // имя выходного поля
}
},
{ $unwind: "$customerInfo" } // развернуть массив в один объект
])
$lookup проходит по каждому заказу и находит соответствующего клиента, где orders.customerId равен customers._idcustomerInfo$unwind затем разворачивает этот массив, заменяя его одним вложенным объектом$unwind удалит этот документ из результатов — используй preserveNullAndEmptyArrays: true, чтобы сохранить заказы без совпадений$lookup аналогична SQL LEFT JOINcustomerId и _id проиндексированы, чтобы конвейер работал эффективноСтадия $lookup в MongoDB создает массив совпадающих документов, поэтому $unwind обычно нужен, чтобы развернуть его в один встроенный объект.
Новый — ещё не проверен сообществом
Вы