deleteMany() (حذف مستندات متعددة)
آخر تحديث: 2026-10-09
deleteMany() (حذف مستندات متعددة)
تحذف deleteMany() كل مستند يطابق مرشحًا وتُعيد deletedCount. وهي أداة العمل للتنظيف الجماعي مثل مسح السجلات القديمة أو إلغاء تفعيل المستخدمين. تحذير: مرشح فارغ {} يفرّغ المجموعة بأكملها، فتحقق من المرشح قبل التشغيل. الحذف لا رجعة فيه — للعمليات الخطرة، قِس الأثر أولًا بـ `db.users.countDocuments({ status: 'expired' })`.
| الفئة | الكتابة |
|---|---|
| إصدار MongoDB | 1.0+ |
| لغة المثال | mongosh (الطرفية) |
📝 الصيغة
db.<collection>.deleteMany(<filter>, { writeConcern: <options> })
⚙️ المعلمات
| شرط التصفية | شرط يطابق المستندات المراد حذفها؛ {} الفارغ يحذف الكل. |
|---|---|
| writeConcern | اختياري. ضمان الكتابة (write concern). |
القيمة المرجعة:DeleteResult: { acknowledged, deletedCount }.
▶ مثال
نفّذ الأوامر التالية في mongosh المحلي لديك (يتطلب تشغيل mongod):
// deleteMany: حذف كل مستخدم دون 18 عامًا
db.users.deleteMany({ age: { $lt: 18 } })
المخرجات:
{ acknowledged: true, deletedCount: 5 }
📌 ملاحظات
- مرشح فارغ {} يحذف كل مستند في المجموعة — أمر خطير
- للحذف الكبير، استخدم الفهارس لتجنب فحص المجموعة بالكامل
- لا رجعة فيه؛ انسخ احتياطيًا أو قِس الأثر بـ countDocuments أولًا
🏷️ وسوم ذات صلة
💡 حالات ذات صلة
📚 دروس ذات صلة
❓ الأسئلة الشائعة
Qماذا يحدث إذا تلقت deleteMany مرشحًا فارغًا؟
Aالمرشح الفارغ {} يطابق كل شيء ويحذف المجموعة بأكملها — تجنب ذلك عن طريق الخطأ.
Qما الفرق بين deleteMany و drop؟
Aتحذف deleteMany() المستندات لكنها تُبقي المجموعة والفهارس؛ بينما تحذف drop() المجموعة نفسها بما فيها الفهارس والبيانات الوصفية.
Qكيف أعرف كم مستندًا حذفته deleteMany؟
Aاقرأ deletedCount من النتيجة: const r = db.users.deleteMany({status: 'del'}); r.deletedCount.