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