$[] (تحديث كل عناصر المصفوفة)
آخر تحديث: 2026-10-09
$[] (تحديث كل عناصر المصفوفة)
$[] هو العامل الموضعي الذي يحدّث كل عنصر من عناصر المصفوفة. فالعبارة `{ $set: { 'grades.$[]': 90 } }` تعيّن كل درجة إلى 90. مقترنًا بـ arrayFilters يحدّث العناصر المطابقة فقط؛ وبدونها يحدّث الكل. $[] يخص بيانات التحديث فقط — أما الاستعلامات فتستخدم $elemMatch بدلًا منه.
| الفئة | معدّل التحديث |
|---|---|
| إصدار MongoDB | 3.6+ |
| لغة المثال | mongosh (الطرفية) |
📝 الصيغة
{ <update operator>: { '<array field>.$[]': <value> } }
⚙️ المعلمات
| حقل مصفوفة | حقل المصفوفة المراد تحديثه بالكامل. |
|---|---|
| قيمة | القيمة المطبَّقة على كل عنصر. |
القيمة المرجعة:نتيجة التحديث
▶ مثال
نفّذ الأوامر التالية في mongosh المحلي لديك (يتطلب تشغيل mongod):
// $[]: تعيين كل درجة إلى 90
db.students.updateOne(
{ _id: 1 },
{ $set: { 'grades.$[]': 90 } }
)
// المصفوفات المتداخلة تستخدم $[] أيضًا
// وضع علامة على كل مستوى
db.students.updateOne(
{ _id: 1 },
{ $set: { 'scores.$[].math': 100 } }
)
المخرجات:
// تصبح كل درجة 90؛ المثال الثاني يعيّن math لكل درجة إلى 100
📌 ملاحظات
- يحدّث كل عنصر عند عدم إعطاء arrayFilters
- التحديثات الشرطية تستخدم $[identifier] مع arrayFilters، وليس $[]
- اكتب $[] لكل مستوى في المصفوفات المتداخلة
🏷️ وسوم ذات صلة
💡 حالات ذات صلة
📚 دروس ذات صلة
❓ الأسئلة الشائعة
Qما الفرق بين $[] و $؟
Aيحدّث $ العنصر الأول المطابق؛ بينما يحدّث $[] كل العناصر.
Qهل يمكن لـ $[] العمل مع الشروط؟
Aالشروط تتطلب $[identifier] مع arrayFilters؛ بينما يحدّث $[] الكل دون شروط.
Qهل يمكن استخدام $[] في الاستعلامات؟
Aلا، يخص بيانات التحديث فقط.