$lookup (ربط المجموعات)

آخر تحديث: 2026-10-09

$lookup (ربط المجموعات)

يُجري $lookup ربطًا خارجيًا أيسر بين المجموعة الحالية ومجموعة أخرى، مرفقًا المستندات المطابقة كمصفوفة بكل نتيجة. وهو مكافئ LEFT JOIN في SQL، ويتيح لخطوط الأنابيب دمج البيانات عبر المجموعات دون استعلامات متعددة. لاحظ أنه يدعم مطابقة المساواة فقط — دون ربط بالنطاقات أو الشروط.

الفئةالمراحل الأساسية
إصدار MongoDB3.2+
لغة المثالmongosh (الطرفية)

📝 الصيغة

{ $lookup: { from: <collection>, localField: <local-field>, foreignField: <foreign-field>, as: <output-array> } }

▶ مثال

نفّذ الأوامر التالية في mongosh المحلي لديك (يتطلب تشغيل mongod):

// $lookup: ربط الطلبات بالعملاء
db.orders.aggregate([
  { $lookup: {
      from: "customers",
      localField: "cust_id",
      foreignField: "_id",
      as: "customer"
  } }
])

المخرجات:

{ "_id": 1, "cust_id": "A123", "customer": [{ "_id": "A123", "name": "Alice" }] }

📌 ملاحظات

📚 دروس ذات صلة

❓ الأسئلة الشائعة

Qهل يمكن لـ $lookup أن يحل محل JOINs على مستوى قاعدة البيانات؟
Aيحقق نتائج مشابهة، لكن $lookup يدمج البيانات وقت الاستعلام: مطابقات المساواة والمقارنات البسيطة داخل خط الأنابيب يمكنها استخدام الفهارس، لكن تحسين الربط فيه أقل شمولًا من قواعد بيانات SQL، لذا قيّم الأداء على مجموعات البيانات الكبيرة جدًا.
Qكيف أحسّن أداء $lookup؟
Aأنشئ فهرسًا على حقل المفتاح الأجنبي في المجموعة المربوطة. وفضّل $match مبكرًا في خط الأنابيب لتقليص المجموعة الرئيسية قبل الربط.
Qهل يدعم $lookup الربط بمفاتيح متعددة؟
Aنعم. منذ 3.6، تتيح صيغة خط الأنابيب في $lookup مع $expr ربطًا متعدد الحقول واستعلامات فرعية تتجاوز مساواة بسيطة على مفتاح واحد.
Web-Tutorial.com

فريق Web-Tutorial التقني

منصة دروس برمجية يديرها عدة مطورين. كل درس يتم كتابته ومراجعته بواسطة مطورين متخصصين في المجال. نعمل على ضمان دقة وموثوقية المحتوى — إذا لاحظت أي مشكلة، فيرجى إخبارنا.

100%