を使用してネストされたルックアップを実行しますパイプラインによるルックアップ 、
-
$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"
}
}
])