$eq (المساواة)
آخر تحديث: 2026-10-09
$eq (المساواة)
يقوم $eq باختيار المستندات التي تكون قيمة حقلها مساوية لقيمة محددة. وهو أكثر مسندات المطابقة التامة شيوعًا في MongoDB: فالعبارة `{ age: { $eq: 21 } }` تكافئ `{ age: 21 }`، لكن $eq يجعل نية المساواة صريحة، ويعمل أيضًا كعامل مقارنة في تعبيرات التجميع. لاحظ أن $eq حساس للنوع: فالسلسلة "21" لا تطابق الرقم 21. لاحظ أيضًا أن الصيغة الصريحة { $eq: /pattern/ } تطابق قيم BSON من نوع regex فقط، على خلاف الصيغة الضمنية { field: /pattern/ } التي تُجري مطابقة بالتعبير النمطي.
| الفئة | المقارنة |
|---|---|
| إصدار MongoDB | 1.0+ |
| لغة المثال | mongosh (الطرفية) |
📝 الصيغة
{ <field>: { $eq: <value> } }
⚙️ المعلمات
| حقل | حقل المستند المراد مطابقته؛ المسارات المنقوطة تصل إلى الحقول المتداخلة (مثل "address.city"). |
|---|---|
| قيمة | القيمة المراد مطابقتها. قد تكون قيمة حرفية أو تعبيرًا؛ وتتأثر بنوع BSON. |
القيمة المرجعة:مؤشر المستندات المطابقة
▶ مثال
نفّذ الأوامر التالية في mongosh المحلي لديك (يتطلب تشغيل mongod):
// $eq: مطابقة تامة للعمر 21
db.users.find({ age: { $eq: 21 } })
// المساواة الضمنية المكافئة
db.users.find({ age: 21 })
// حقل متداخل + حساسية النوع
db.users.find({ "address.city": { $eq: "Beijing" } })
المخرجات:
// يُرجع كل المستندات التي عمرها 21 بالضبط (من النوع الرقمي)
{ "_id": ObjectId("..."), "name": "Alice", "age": 21, "address": { "city": "Beijing" } }
📌 ملاحظات
- حساس للنوع: { $eq: "21" } لن يطابق الرقم 21
- مع قيمة عددية، يطابق $eq حقلًا من نوع مصفوفة إذا ساوى عنصر من عناصره القيمة (مثل $elemMatch: { $eq: value })؛ أما مع قيمة مصفوفة فيجب أن يساوي الحقل المصفوفة بأكملها أو يحتوي عنصرًا يساويها تمامًا
- يُطابق $eq: null المستندات التي يكون حقلها مفقودًا أو قيمته null (يختلف عن $exists: false)
🏷️ وسوم ذات صلة
💡 حالات ذات صلة
أساسيات الاستعلام عن المستندات: طريقة `find` وعمليات الإسقاط
مشغلات الاستعلام: دليل شامل لأكثر من 30 مشغلًا
📚 دروس ذات صلة
❓ الأسئلة الشائعة
Qما الفرق بين $eq وكتابة { age: 21 } مباشرة؟
Aمتطابقتان وظيفيًا؛ $eq يجعل نية المساواة صريحة فقط ويُحسّن قابلية القراءة داخل تركيبات $and/$or.
Qهل يمكن لـ $eq مطابقة قيمة null؟
Aنعم. يطابق $eq: null المستندات التي يكون حقلها مفقودًا أو قيمته null. لمطابقة قيمة null الحرفية فقط، ادمج مع $type: 10 (Null).
Qكيف يتصرف $eq مع الحقول من نوع مصفوفة؟
Aيطابق إذا كان أي عنصر في المصفوفة يساوي القيمة (مكافئ لـ $elemMatch). للحصول على مطابقة تامة للمصفوفة بأكملها، استخدم حرفية المصفوفة مباشرة أو ادمج مع $size.