Извършете вложено търсене с помощта на търсене с конвейер ,
$lookup
сorders
колекция,let
, дефинирайте променливаcustomer_id
който е от главната колекция, за достъп до тази референтна променлива вътре в конвейера с помощта на$$
като$$customer_id
,pipeline
може да добавя етапи на тръбопровода, както правим в тръбопровода на основно ниво$expr
всеки път, когато съпоставяме вътрешни полета, това изисква условие за съвпадение на израз, така че$$customer_id
е родителско поле за колекция, декларирано вlet
и$customer_id
е полето на дъщерната/текущата колекция
$lookup
сorderitems
колекция
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"
}
}
])