دوره‌ها / MongoDB / $lookup - Join ($lookup - Join)

$lookup - Join ($lookup - Join)

15 دقیقه Article

$lookup - Join: اتصال Collections 🔗

$lookup برای join کردن دو collection استفاده می‌شود (مشابه JOIN در SQL). این stage به شما امکان می‌دهد داده‌ها را از collection های مختلف ترکیب کنید.

سینتکس $lookup:

// Join orders با users
db.orders.aggregate([
  {{
    $lookup: {{
      from: "users",           // collection مقصد
      localField: "userId",    // فیلد در collection فعلی
      foreignField: "_id",     // فیلد در collection مقصد
      as: "userInfo"          // نام فیلد جدید برای نتایج
    }}
  }}
])

// نتیجه: هر order یک فیلد userInfo دارد که شامل اطلاعات user است

مثال عملی:

// Join products با categories
db.products.aggregate([
  {{
    $lookup: {{
      from: "categories",
      localField: "categoryId",
      foreignField: "_id",
      as: "category"
    }}
  }},
  {{
    $unwind: "$category"  // تبدیل array به object
  }}
])
💡 نکته: $lookup یک left outer join انجام می‌دهد. اگر match پیدا نشود، فیلد as به صورت array خالی برگردانده می‌شود.
✅ یاد گرفتید: $lookup برای join کردن collections و ترکیب داده‌ها از منابع مختلف استفاده می‌شود!

تمرین‌های عملی

برای تثبیت یادگیری این درس تمرین‌های زیر را حل کنید

تمرین: $lookup Hard
سوال تمرین

🎯 تمرین: Join با $lookup

یک aggregation با $lookup بنویسید.

پاسخ تمرین
JAVASCRIPT
db.orders.aggregate([
    {
        $lookup: {
            from: "users",
            localField: "user_id",
            foreignField: "_id",
            as: "user"
        }
    },
    { $unwind: "$user" }
])

آماده رفتن به درس بعدی هستید؟

این درس را به پایان رساندید و می‌توانید به درس بعدی بروید.