$lookup - Join ($lookup - Join)
$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" }
])
آماده رفتن به درس بعدی هستید؟
این درس را به پایان رساندید و میتوانید به درس بعدی بروید.