$nin (ليس في المصفوفة)
آخر تحديث: 2026-10-09
$nin (ليس في المصفوفة)
يقوم $nin باختيار المستندات التي لا تساوي قيمة حقلها أي قيمة من المصفوفة المعطاة — وهو نفي $in. فالعبارة `{ age: { $nin: [18, 21] } }` تطابق المستخدمين الذين ليس عمرهم 18 ولا 21. ومثل $ne لا يطابق المستندات التي يكون الحقل فيها مفقودًا؛ ومع الحقول من نوع مصفوفة يطابق عندما لا يكون أي عنصر في المصفوفة.
| الفئة | المقارنة |
|---|---|
| إصدار MongoDB | 1.0+ |
| لغة المثال | mongosh (الطرفية) |
📝 الصيغة
{ <field>: { $nin: [ <value1>, <value2>, ... ] } }
⚙️ المعلمات
| حقل | حقل المستند المراد مطابقته. |
|---|---|
| مصفوفة قيم | قائمة القيم المراد استبعادها؛ ويجب ألا يساوي الحقل أيًّا منها. |
القيمة المرجعة:مؤشر المستندات المطابقة
▶ مثال
نفّذ الأوامر التالية في mongosh المحلي لديك (يتطلب تشغيل mongod):
// $nin: استبعاد المستخدمين بعمر 18 و21
db.users.find({ age: { $nin: [18, 21] } })
// المستندات ذات الحقل المفقود لا تُرجَع
db.users.find({ age: { $nin: [18] } })
المخرجات:
// يُرجع المستخدمين الذين ليس عمرهم 18 ولا 21؛ تُستبعد المستندات ذات الحقل المفقود
📌 ملاحظات
- لا يطابق المستندات التي يكون الحقل فيها مفقودًا؛ ادمجه مع $exists لتضمينها
- مع الحقول من نوع مصفوفة، يطابق عندما لا يكون أي عنصر في المصفوفة
- استخدم $ne لقيمة واحدة، و$nin لقائمة كاملة
🏷️ وسوم ذات صلة
💡 حالات ذات صلة
أساسيات الاستعلام عن المستندات: طريقة `find` وعمليات الإسقاط
مشغلات الاستعلام: دليل شامل لأكثر من 30 مشغلًا
📚 دروس ذات صلة
❓ الأسئلة الشائعة
Qما الفرق بين $nin و $ne؟
A$ne يستبعد قيمة واحدة بينما يستبعد $nin قائمة؛ كلاهما يعني "لا يساوي"، و$nin هو الصيغة المجمعة.
Qهل يُرجع $nin المستندات التي لا يحتوي حقلها على قيمة؟
Aلا. مثل $ne، يطابق $nin فقط المستندات التي يوجد فيها الحقل وقيمته ليست في المصفوفة.
Qكيف يطابق $nin الحقول من نوع مصفوفة؟
Aيطابق عندما لا يكون أي عنصر منفرد في المصفوفة المعطاة، وليس المصفوفة بأكملها دفعة واحدة.