Effectuez une recherche imbriquée à l'aide de recherche avec pipeline ,
$lookup
avecorders
collecte,let
, définissez la variablecustomer_id
c'est-à-dire de la collection principale, pour accéder à cette variable de référence à l'intérieur du pipeline en utilisant$$
comme$$customer_id
,pipeline
peut ajouter des étapes de pipeline comme nous le faisons dans le pipeline au niveau racine$expr
chaque fois que nous faisons correspondre des champs internes, cela nécessite une condition de correspondance d'expression, donc$$customer_id
est le champ de collection parent déclaré danslet
et$customer_id
est le champ de la collection enfant/de la collection actuelle
$lookup
avecorderitems
collecte
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"
}
}
])