$elemMatch (مطابقة عنصر المصفوفة)

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

$elemMatch (مطابقة عنصر المصفوفة)

يطابق $elemMatch المستندات التي يحقق فيها عنصر مصفوفة واحد على الأقل جميع الشروط المعطاة. فالعبارة `{ scores: { $elemMatch: { $gt: 80, $lt: 90 } } }` تتطلب درجة واحدة تكون أكبر من 80 وأصغر من 90 معًا. بدون $elemMatch، تطابق استعلامات المصفوفة متعددة الشروط عبر عناصر مختلفة — وهو مأزق استعلامات المصفوفة الكلاسيكي.

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

📝 الصيغة

{ <field>: { $elemMatch: { <condition1>, <condition2>, ... } } }

⚙️ المعلمات

حقلحقل المصفوفة المراد مطابقته.
الشرطشروط الاستعلام التي يجب أن يستوفيها العنصر جميعًا.

القيمة المرجعة:مؤشر المستندات المطابقة

▶ مثال

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

// $elemMatch: درجة واحدة بين 80 و90
// يجب أن يحقق العنصر نفسه الشرطين
db.students.find({ scores: { $elemMatch: { $gt: 80, $lt: 90 } } })

// خطأ: قد تطابق عبر عناصر مختلفة
// db.students.find({ scores: { $gt: 80, $lt: 90 } })

المخرجات:

// يُرجع الطلاب الذين لديهم درجة واحدة أعلى من 80 وأقل من 90

📌 ملاحظات

📚 دروس ذات صلة

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

Qما الفرق بين $elemMatch والشروط المصفوفية العادية؟
Aيمكن لـ { $gt: 80, $lt: 90 } العادي المطابقة عبر عناصر مختلفة؛ بينما يفرض $elemMatch أن يحقق عنصر واحد الشرطين معًا.
Qهل يمكن لـ $elemMatch مطابقة مصفوفات المستندات المتداخلة؟
Aنعم، اشر إلى الحقول المتداخلة، مثل { $elemMatch: { type: 'exam', score: { $gte: 90 } } }.
Qهل يمكن تطبيق $elemMatch على حقل واحد فقط؟
Aنعم، يستهدف حقل مصفوفة واحدًا؛ استخدم $elemMatch منفصلًا لكل حقل مصفوفة.
Web-Tutorial.com

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

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

100%