Thực hiện tra cứu lồng nhau bằng cách sử dụng tra cứu bằng đường dẫn ,
-
$lookup
vớiorders
bộ sưu tập,-
let
, xác định biếncustomer_id
đó là từ bộ sưu tập chính, để truy cập biến tham chiếu này bên trong đường ống bằng cách sử dụng$$
như$$customer_id
, -
pipeline
có thể thêm các giai đoạn đường ống giống như chúng ta làm trong đường ống cấp cơ sở -
$expr
bất cứ khi nào chúng tôi đối sánh các trường nội bộ, nó yêu cầu điều kiện đối sánh biểu thức, vì vậy$$customer_id
là trường tập hợp mẹ được khai báo tronglet
và$customer_id
là trường của bộ sưu tập con / bộ sưu tập hiện tại
-
-
$lookup
vớiorderitems
bộ sưu tập
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"
}
}
])