Foretag indlejret opslag ved hjælp af opslag med pipeline ,
$lookup
medorders
samling,let
, definer variabelcustomer_id
det er fra hovedsamlingen, for at få adgang til denne referencevariabel inde i pipeline ved hjælp af$$
som$$customer_id
,pipeline
kan tilføje pipeline-trin på samme måde, som vi gør i rodniveau-pipeline$expr
hver gang vi matcher interne felter kræver det udtryksmatch-betingelse, så$$customer_id
er et overordnet samlingsfelt, der er erklæret ilet
og$customer_id
er børnesamlingens/nuværende samlings felt
$lookup
medorderitems
indsamling
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"
}
}
])