$exists (وجود الحقل)
آخر تحديث: 2026-10-09
$exists (وجود الحقل)
يقوم $exists بتصفية المستندات بناءً على وجود حقل. فالعبارة `{ $exists: true }` تطابق المستندات التي يوجد فيها الحقل وقيمته ليست null؛ بينما `{ $exists: false }` تطابق المستندات التي يكون الحقل فيها مفقودًا. وهو الأداة الأساسية لمشاكل الحقول المفقودة، ويُزاوج مع $ne/$gt اللذين يتجاهلان الحقول المفقودة بخلاف ذلك.
| الفئة | العنصر والتقييم |
|---|---|
| إصدار MongoDB | 1.0+ |
| لغة المثال | mongosh (الطرفية) |
📝 الصيغة
{ <field>: { $exists: <boolean> } }
⚙️ المعلمات
| حقل | حقل المستند المراد اختبار وجوده. |
|---|---|
| boolean | true يطابق الحقول الموجودة، وfalse يطابق الحقول المفقودة. |
القيمة المرجعة:مؤشر المستندات المطابقة
▶ مثال
نفّذ الأوامر التالية في mongosh المحلي لديك (يتطلب تشغيل mongod):
// $exists: المستخدمون الذين لديهم بريد إلكتروني
// يجب أن يوجد الحقل وألا يكون null
db.users.find({ email: { $exists: true } })
// المستخدمون بدون حقل بريد إلكتروني
db.users.find({ email: { $exists: false } })
المخرجات:
// الأول يُرجع المستخدمين الذين لديهم حقل بريد إلكتروني؛ والثاني يُرجع من لا يملكونه
📌 ملاحظات
- $exists: true لا يطابق حقلًا تكون قيمته null
- ادمجه مع $ne/$gt/$nin لتعويض سلوكهم تجاه الحقول المفقودة
- استخدم المسارات النقطية للحقول المتداخلة: { 'address.city': { $exists: true } }
🏷️ وسوم ذات صلة
💡 حالات ذات صلة
📚 دروس ذات صلة
❓ الأسئلة الشائعة
Qهل يطابق $exists: true قيم null؟
Aلا. حقل موجود بقيمة null يفشل في $exists: true؛ استخدم $type: 10 أو $eq: null بدلًا من ذلك.
Qكيف يعمل $exists مع $ne معًا؟
A{ $ne: value, $exists: true } تعني "الحقل موجود ويختلف" — وتمنع $ne من تخطي الحقول المفقودة.
Qكيف أتحقق من وجود حقل من نوع مصفوفة؟
Aبنفس النمط: { $exists: true }؛ المصفوفة الفارغة ما زالت تُحتسب موجودة.