$cmp (المقارنة)

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

$cmp (المقارنة)

يقارن $cmp قيمتين ويُرجع -1 أو 0 أو 1 للأصغر أو المتساوي أو الأكبر. وهو عامل المقارنة بصيغة التعبير، يُستخدم غالبًا لمفاتيح فرز مخصصة أو فحوصات حجم داخل $cond. تتبع المقارنات ترتيب أنواع BSON، لذا لا تُسبب مقارنة أنواع مختلفة خطأً — تُرتَّب القيم حسب نوعها. على عكس $eq و $gt اللذين يُرجعان قيمًا منطقية، يُرجع $cmp نتيجة ثلاثية الاتجاهات تصلح مباشرة لمنطق الفرز أو التفرع.

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

📝 الصيغة

{ $cmp: [ <expression1>, <expression2> ] }

⚙️ المعلمات

تعبير 1التعبير الأول للمقارنة.
تعبير 2التعبير الثاني للمقارنة.

القيمة المرجعة:‏-1 عندما يكون الأول أصغر، و0 عند التساوي، و1 عندما يكون أكبر

▶ مثال

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

// $cmp: مقارنة درجتين
db.scores.aggregate([
  { $project: {
      result: { $cmp: ['$scoreA', '$scoreB'] }
  } }
])

المخرجات:

{ '_id': 1, 'result': 1 }
{ '_id': 2, 'result': -1 }

📌 ملاحظات

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

📚 دروس ذات صلة

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

Qماذا يُرجع $cmp؟
A-1 عندما تكون الأولى أصغر، و 0 عند التساوي، و 1 عندما تكون أكبر.
Qكيف يختلفان $cmp و $eq؟
A$eq يُرجع قيمة منطقية بينما يُرجع $cmp نتيجة ثلاثية الاتجاهات تناسب الفرز والتفرع.
Qهل يُسبب $cmp خطأً عند مقارنة أنواع مختلفة؟
Aلا — يتبع ترتيب أنواع BSON، فتترتب السلاسل بعد الأرقام.
Web-Tutorial.com

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

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

100%