$switch (شرط متعدد الفروع)

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

$switch (شرط متعدد الفروع)

يقيّم $switch عدة فروع case بالترتيب ويُرجع نتيجة then لأول فرع صادق، مثل عبارة switch في لغات البرمجة. عندما لا يطابق أي فرع، يُرجع default؛ وحذف default مع عدم تطابق أي فرع يُسبب خطأً. الاستخدامات النموذجية: تحويل رموز حالة الطلبات إلى تسميات أو تقسيم الدرجات إلى نطاقات. يتبع كل فرع قواعد الصدق. مقارنةً بـ $cond المتداخل، يقرأ $switch بشكل أوضح ويدعم عددًا غير محدود من الفروع.

الفئةالمجموعة والشرط والتحويل
إصدار MongoDB1.0+
لغة المثالmongosh (الطرفية)

📝 الصيغة

{ $switch: { branches: [ { case: <condition>, then: <result> }, ... ], default: <default> } }

⚙️ المعلمات

branchesمصفوفة الفروع؛ لكل عنصر شرط case ونتيجة then.
defaultقيمة اختيارية تُرجَع عندما لا تتطابق أي حالة.

القيمة المرجعة:قيمة then لأول حالة صحيحة، أو default عند عدم تطابق أي حالة

▶ مثال

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

// $switch: تصنيف الطلبات حسب المبلغ
db.orders.aggregate([
  { $project: {
      tier: { $switch: { branches: [
        { case: { $gte: ['$amount', 1000] }, then: 'gold' },
        { case: { $gte: ['$amount', 100] }, then: 'silver' }
      ], default: 'bronze' } }
  } }
])

المخرجات:

{ '_id': 1, 'tier': 'silver' }
{ '_id': 2, 'tier': 'bronze' }

📌 ملاحظات

مزيد من الحالات العملية قريبًا.

📚 دروس ذات صلة

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

Qماذا يحدث عندما لا يطابق أي فرع؟
Aيُرجع default؛ وبدون default يُسبب خطأً، لذا وفّره دائمًا.
Qهل $switch أفضل من $cond المتداخل؟
Aيقرأ $switch بشكل أوضح مع فروع كثيرة، محافظًا على منطق مسطح.
Qهل تُقيَّم كل الحالات؟
Aلا — يتوقف التقييم عند أول تطابق.
Web-Tutorial.com

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

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

100%