$not (النفي المنطقي)
آخر تحديث: 2026-10-09
$not (النفي المنطقي)
ينفي $not تعبير عامل، فيرجع المستندات التي تفشل في الشرط الداخلي. فالعبارة `{ price: { $not: { $gt: 50 } } }` تطابق المنتجات التي سعرها 50 على الأكثر. لا يطابق $not المستندات التي يكون الحقل فيها مفقودًا، ويتطلب تعبير عامل بداخله — وليس حرفية تعبير نمطي.
| الفئة | المنطقي |
|---|---|
| إصدار MongoDB | 1.0+ |
| لغة المثال | mongosh (الطرفية) |
📝 الصيغة
{ <field>: { $not: { <operator expression> } } }
⚙️ المعلمات
| حقل | حقل المستند المراد مطابقته. |
|---|---|
| تعبير مشغّل | شرط المعامل المراد نفيه، مثل { $gt: 50 }. |
القيمة المرجعة:مؤشر المستندات المطابقة
▶ مثال
نفّذ الأوامر التالية في mongosh المحلي لديك (يتطلب تشغيل mongod):
// $not: السعر ليس أكبر من 50
db.products.find({ price: { $not: { $gt: 50 } } })
// المكافئ: $lte أكثر مباشرة
db.products.find({ price: { $lte: 50 } })
المخرجات:
// يُرجع المنتجات بسعر 50 على الأكثر؛ تُستبعد المستندات ذات الحقل المفقود
📌 ملاحظات
- لا يطابق $not الحقول المفقودة؛ ادمجه مع $exists لتضمينها
- فضّل العامل المباشر ($lte، $ne) عندما يعبّر عن النفي بشكل أوضح
- يقبل $not تعبيرات العوامل فقط ($gt، $regex) وليس الحرفيات
🏷️ وسوم ذات صلة
💡 حالات ذات صلة
أساسيات الاستعلام عن المستندات: طريقة `find` وعمليات الإسقاط
مشغلات الاستعلام: دليل شامل لأكثر من 30 مشغلًا
📚 دروس ذات صلة
❓ الأسئلة الشائعة
Qما الفرق بين $not و $ne؟
A$ne يعني "لا يساوي قيمة"؛ بينما ينفي $not تعبير عامل كامل، مثل { $not: { $gt: 50 } }.
Qهل يطابق $not المستندات التي يكون الحقل فيها مفقودًا؟
Aلا. الحقل المفقود يفشل في الشرط الداخلي، لذا لا يطابق النفي أيضًا.
Qهل يمكن لـ $not نفي تعبير نمطي؟
Aنعم، عبر { $not: { $regex: '...' } }، ولكن ليس بالصيغة { $not: /pattern/ }.