updateMany() (تحديث مستندات متعددة)

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

updateMany() (تحديث مستندات متعددة)

تحدّث updateMany() كل مستند يطابق مرشحًا، مثل `db.users.updateMany({ age: { $lt: 18 } }, { $set: { isTeen: true } })`. على عكس updateOne() التي تمس أول تطابق فقط، فإنها تطبّق التحديث على جميع المستندات المطابقة — وهي مناسبة لتغييرات الحالة الجماعية أو إضافة حقول في كل مكان. تُبلّغ النتيجة عن matchedCount (عدد التطابقات) و modifiedCount (المستندات التي تغيّرت فعلًا).

الفئةالكتابة
إصدار MongoDB1.0+
لغة المثالmongosh (الطرفية)

📝 الصيغة

db.<collection>.updateMany(<filter>, <update>, { upsert: <bool> })

⚙️ المعلمات

شرط التصفيةكائن شرط؛ يدعم معاملات الاستعلام.
عملية التحديثكائن معاملات التحديث المطبَّق على كل تطابق.
upsertاختياري. يُدرج مستندًا واحدًا عند عدم وجود تطابق؛ الافتراضي false.

القيمة المرجعة:‏UpdateResult: { acknowledged, matchedCount, modifiedCount, upsertedId }.

▶ مثال

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

// updateMany: وسم كل من تجاوز 30 عامًا بصفة الأقدمية
db.users.updateMany(
  { age: { $gt: 30 } },
  { $set: { isSenior: true } }
)

المخرجات:

{ acknowledged: true, matchedCount: 3, modifiedCount: 3, upsertedId: null }

📌 ملاحظات

📚 دروس ذات صلة

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

Qهل تحدِّث updateMany كل مستند مطابق؟
Aنعم، كل مستند مطابق يُحدَّث. تمرير مرشح فارغ {} يحدِّث المجموعة بأكملها، فكن حذرًا.
Qما الفرق بين updateMany و updateOne؟
Aتحدِّث updateOne() أول تطابق فقط؛ بينما تحدِّث updateMany() كل التطابقات. اختر updateMany() للتغييرات الجماعية.
Qلماذا يكون modifiedCount أصغر من matchedCount؟
Aبعض المستندات المطابقة تحمل القيم المستهدفة بالفعل، فتعدّها MongoDB دون تغيير وتستبعدها من modifiedCount.
Web-Tutorial.com

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

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

100%