deleteOne() (حذف مستند واحد)
آخر تحديث: 2026-10-09
deleteOne() (حذف مستند واحد)
تحذف deleteOne() أول مستند يطابق مرشحًا؛ وإذا طابق عدة مستندات، يُحذف الأول بالترتيب الطبيعي فقط. تتضمن النتيجة deletedCount (0 أو 1). لا يمكن التراجع عن الحذف، لذا من الحكمة التأكد من الهدف أولًا بـ `db.users.findOne({ name: 'Alice' })`. وهي الطريقة الأكثر مباشرة لحذف مستند واحد.
| الفئة | الكتابة |
|---|---|
| إصدار MongoDB | 1.0+ |
| لغة المثال | mongosh (الطرفية) |
📝 الصيغة
db.<collection>.deleteOne(<filter>, { writeConcern: <options> })
⚙️ المعلمات
| شرط التصفية | شرط يطابق المستند المراد حذفه. |
|---|---|
| writeConcern | اختياري. ضمان الكتابة (write concern). |
القيمة المرجعة:DeleteResult: { acknowledged, deletedCount }.
▶ مثال
نفّذ الأوامر التالية في mongosh المحلي لديك (يتطلب تشغيل mongod):
// deleteOne: حذف المستخدم المسمى Alice
db.users.deleteOne({ name: 'Alice' })
المخرجات:
{ acknowledged: true, deletedCount: 1 }
📌 ملاحظات
- يحذف أول تطابق فقط؛ استخدم deleteMany() لحذف الكل
- deletedCount بقيمة 0 يعني عدم وجود تطابق — وليس خطأ
- الحذف لا رجعة فيه؛ انظر قبل أن تحذف في بيئة الإنتاج
🏷️ وسوم ذات صلة
💡 حالات ذات صلة
📚 دروس ذات صلة
❓ الأسئلة الشائعة
Qهل تحذف deleteOne كل المستندات المطابقة؟
Aلا، تحذف deleteOne() أول تطابق فقط. استخدم deleteMany() لحذف كل التطابقات.
Qهل ترفع deleteOne خطأً عند عدم تطابق شيء؟
Aلا خطأ — تُعيد deletedCount: 0، مما يخبرك هل طابق المرشح شيئًا أم لا.
Qهل يمكن استرداد مستند محذوف؟
Aليس عبر واجهة البرمجة. الحذف مادي؛ يعتمد الاسترداد على النسخ الاحتياطية أو سجل العمليات (oplog) في مجموعات النسخ المتماثلة، لذا انسخ البيانات المهمة احتياطيًا أولًا.