$[identifier] (العامل الموضعي المفلتر)

آخر تحديث: 2026-10-09

$[identifier] (العامل الموضعي المفلتر)

$[identifier] هو العامل الموضعي الذي يحدّث، مع arrayFilters، عناصر المصفوفة المطابقة لشرط فقط. `{ $set: { 'grades.$[elem]': 90 } }, { arrayFilters: [{ 'elem.grade': { $gte: 85 } }] }`. عامل تحديث المصفوفات الأكثر مرونة، مقدَّم في MongoDB 3.6؛ تُعرَّف المعرفات في arrayFilters ويمكنها مطابقة حقول المستندات المتداخلة.

الفئةمعدّل التحديث
إصدار MongoDB3.6+
لغة المثالmongosh (الطرفية)

📝 الصيغة

{ <update operator>: { '<array field>.$[<identifier>]': <value> } }, { arrayFilters: [ { '<identifier>.<field>': <condition> } ] }

⚙️ المعلمات

حقل مصفوفةحقل المصفوفة المراد تحديثه.
المعرّفعنصر نائب مُعرَّف في arrayFilters، مثل elem.
arrayFiltersمصفوفة الشروط التي تحدّد قواعد مطابقة المعرّفات.

القيمة المرجعة:نتيجة التحديث

▶ مثال

نفّذ الأوامر التالية في mongosh المحلي لديك (يتطلب تشغيل mongod):

// $[elem]: تحديث الدرجات >= 85 فقط
// arrayFilters يحدد قاعدة elem
db.students.updateOne(
  { _id: 1 },
  { $set: { 'grades.$[elem]': 100 } },
  { arrayFilters: [{ 'elem': { $gte: 85 } }] }
)

المخرجات:

// فقط الدرجات 85 أو أعلى تصبح 100؛ والباقي يبقى دون تغيير

📌 ملاحظات

مزيد من الحالات العملية قريبًا.

📚 دروس ذات صلة

❓ الأسئلة الشائعة

Qما الفرق بين $[elem] و $[]؟
Aيحدّث $[] كل العناصر؛ بينما يحدّث $[elem] مع arrayFilters المطابقة فقط.
Qكيف أكتب arrayFilters؟
A{ arrayFilters: [{ 'elem': { $gte: 85 } }] }؛ المعرفات لا تحمل بادئة $.
Qهل يمكنني التصفية على حقول متداخلة؟
Aنعم، مثل { 'elem.type': 'exam' }.
Web-Tutorial.com

فريق Web-Tutorial التقني

منصة دروس برمجية يديرها عدة مطورين. كل درس يتم كتابته ومراجعته بواسطة مطورين متخصصين في المجال. نعمل على ضمان دقة وموثوقية المحتوى — إذا لاحظت أي مشكلة، فيرجى إخبارنا.

100%