Führen Sie eine verschachtelte Suche mit durch Suche mit Pipeline ,
$lookup
mitorders
Sammlung,let
, definieren Sie die Variablecustomer_id
das ist aus der Hauptsammlung, um auf diese Referenzvariable innerhalb der Pipeline mit$$
zuzugreifen wie$$customer_id
,pipeline
können Pipeline-Stufen hinzufügen, genauso wie wir es in der Root-Level-Pipeline tun$expr
Immer wenn wir interne Felder abgleichen, ist eine Ausdrucksabgleichbedingung erforderlich, also$$customer_id
ist das übergeordnete Sammlungsfeld, das inlet
deklariert ist und$customer_id
ist das Feld der untergeordneten Sammlung/aktuellen Sammlung
$lookup
mitorderitems
Sammlung
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"
}
}
])