findOneAndDelete() (حذف مستند وإعادته)

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

findOneAndDelete() (حذف مستند وإعادته)

تحذف findOneAndDelete() أول مستند يطابق مرشحًا وتُعيد المستند المحذوف نفسه، مثل `db.users.findOneAndDelete({ name: 'Cara' })`. على عكس deleteOne() التي تُعيد عدّادات فقط، فإنها تُسلّم المستند الكامل — مفيدة للأرشفة أو تدقيق عمليات الحذف. وتُعيد null عندما لا يطابق شيء.

الفئةالكتابة
إصدار MongoDB1.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
}

📌 ملاحظات

📚 دروس ذات صلة

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

Qما الفرق بين findOneAndDelete و deleteOne؟
Aتُعيد deleteOne() deletedCount فقط؛ بينما تُعيد findOneAndDelete() المستند المحذوف كاملًا للأرشفة والتدقيق.
Qماذا تُعيد findOneAndDelete عندما لا يطابق شيء؟
Aتُعيد null دون رفع خطأ، مما يتيح لك معرفة هل طابق المرشح شيئًا.
Qهل يمكن أن تحدّ findOneAndDelete الحقول المُعادة؟
Aنعم، عبر خيار projection — مثل {projection: {name: 1}} الذي يُعيد الاسم فقط.
Web-Tutorial.com

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

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

100%