$switch (شرط متعدد الفروع)
آخر تحديث: 2026-10-09
$switch (شرط متعدد الفروع)
يقيّم $switch عدة فروع case بالترتيب ويُرجع نتيجة then لأول فرع صادق، مثل عبارة switch في لغات البرمجة. عندما لا يطابق أي فرع، يُرجع default؛ وحذف default مع عدم تطابق أي فرع يُسبب خطأً. الاستخدامات النموذجية: تحويل رموز حالة الطلبات إلى تسميات أو تقسيم الدرجات إلى نطاقات. يتبع كل فرع قواعد الصدق. مقارنةً بـ $cond المتداخل، يقرأ $switch بشكل أوضح ويدعم عددًا غير محدود من الفروع.
| الفئة | المجموعة والشرط والتحويل |
|---|---|
| إصدار MongoDB | 1.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' }
📌 ملاحظات
- تُقيَّم الفروع بالترتيب وتتوقف عند أول صادق
- غياب default مع عدم تطابق فرع يُسبب خطأً؛ وفّره دائمًا في الإنتاج
- تتبع الحالات قواعد الصدق، فالتعبيرات غير المنطقية مقبولة
🏷️ وسوم ذات صلة
💡 حالات ذات صلة
مزيد من الحالات العملية قريبًا.
📚 دروس ذات صلة
❓ الأسئلة الشائعة
Qماذا يحدث عندما لا يطابق أي فرع؟
Aيُرجع default؛ وبدون default يُسبب خطأً، لذا وفّره دائمًا.
Qهل $switch أفضل من $cond المتداخل؟
Aيقرأ $switch بشكل أوضح مع فروع كثيرة، محافظًا على منطق مسطح.
Qهل تُقيَّم كل الحالات؟
Aلا — يتوقف التقييم عند أول تطابق.