Realice una búsqueda anidada usando buscar con canalización ,
$lookup
conorders
colección,let
, define la variablecustomer_id
eso es de la colección principal, para acceder a esta variable de referencia dentro de la canalización usando$$
como$$customer_id
,pipeline
puede agregar etapas de canalización igual que lo hacemos en la canalización de nivel raíz$expr
cada vez que hacemos coincidir campos internos, se requiere una condición de coincidencia de expresión, por lo que$$customer_id
es el campo de la colección principal que se declaró enlet
y$customer_id
es el campo de la colección secundaria/colección actual
$lookup
conorderitems
colección
db.customers.aggregate([
{
$lookup: {
from: "orders",
let: { customer_id: "$customer_id" },
pipeline: [
{ $match: { $expr: { $eq: ["$$customer_id", "$customer_id"] } } },
{
$lookup: {
from: "orderitems",
localField: "order_id",
foreignField: "order_id",
as: "items"
}
}
],
as: "orders"
}
}
])