findOneAndDelete() (حذف مستند وإعادته)
آخر تحديث: 2026-10-09
findOneAndDelete() (حذف مستند وإعادته)
تحذف findOneAndDelete() أول مستند يطابق مرشحًا وتُعيد المستند المحذوف نفسه، مثل `db.users.findOneAndDelete({ name: 'Cara' })`. على عكس deleteOne() التي تُعيد عدّادات فقط، فإنها تُسلّم المستند الكامل — مفيدة للأرشفة أو تدقيق عمليات الحذف. وتُعيد null عندما لا يطابق شيء.
| الفئة | الكتابة |
|---|---|
| إصدار MongoDB | 1.0+ |
| لغة المثال | mongosh (الطرفية) |
📝 الصيغة
db.<collection>.findOneAndDelete(<filter>, { projection: <fields> })
⚙️ المعلمات
| شرط التصفية | شرط يطابق المستند المراد حذفه. |
|---|---|
| projection | اختياري. يتحكم في الحقول المُرجَعة من المستند المحذوف. |
القيمة المرجعة:المستند المحذوف؛ null عندما لا يتطابق شيء.
▶ مثال
نفّذ الأوامر التالية في mongosh المحلي لديك (يتطلب تشغيل mongod):
// findOneAndDelete: حذف Cara وطباعة سجلّها
const removed = db.users.findOneAndDelete({ name: 'Cara' })
removed
المخرجات:
{
_id: ObjectId('64c8a1b20000000000000003'),
name: 'Cara',
age: 30
}
📌 ملاحظات
- تُعيد المستند المحذوف للأرشفة أو التدقيق
- تحذف أول تطابق فقط
- تُعيد null بدلًا من رفع خطأ عند عدم تطابق شيء
🏷️ وسوم ذات صلة
💡 حالات ذات صلة
📚 دروس ذات صلة
❓ الأسئلة الشائعة
Qما الفرق بين findOneAndDelete و deleteOne؟
Aتُعيد deleteOne() deletedCount فقط؛ بينما تُعيد findOneAndDelete() المستند المحذوف كاملًا للأرشفة والتدقيق.
Qماذا تُعيد findOneAndDelete عندما لا يطابق شيء؟
Aتُعيد null دون رفع خطأ، مما يتيح لك معرفة هل طابق المرشح شيئًا.
Qهل يمكن أن تحدّ findOneAndDelete الحقول المُعادة؟
Aنعم، عبر خيار projection — مثل {projection: {name: 1}} الذي يُعيد الاسم فقط.