Wykonaj wyszukiwanie zagnieżdżone za pomocą wyszukiwanie za pomocą potoku ,
$lookup
zorders
kolekcja,let
, zdefiniuj zmiennącustomer_id
czyli z głównej kolekcji, aby uzyskać dostęp do tej zmiennej referencyjnej wewnątrz potoku za pomocą$$
jak$$customer_id
,pipeline
możemy dodać etapy potoku tak samo, jak robimy to w potoku na poziomie głównym$expr
ilekroć dopasujemy pola wewnętrzne, wymaga to warunku dopasowania wyrażenia, więc$$customer_id
jest nadrzędnym polem kolekcji zadeklarowanym wlet
i$customer_id
jest polem kolekcji podrzędnej/bieżącej
$lookup
zorders
kolekcja
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"
}
}
])