Esegui la ricerca nidificata utilizzando ricerca con pipeline ,
$lookup
conorders
raccolta,let
, definisci la variabilecustomer_id
ovvero dalla raccolta principale, per accedere a questa variabile di riferimento all'interno della pipeline utilizzando$$
come$$customer_id
,pipeline
possiamo aggiungere fasi della pipeline come facciamo nella pipeline a livello di root$expr
ogni volta che abbiniamo campi interni, è necessaria la condizione di corrispondenza dell'espressione, quindi$$customer_id
è il campo di raccolta padre dichiarato inlet
e$customer_id
è il campo della raccolta figlio/della raccolta corrente
$lookup
conorderitems
raccolta
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"
}
}
])