replaceOne() (استبدال مستند)

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

replaceOne() (استبدال مستند)

تستبدل replaceOne() أول مستند يطابق مرشحًا بمستند جديد كليًا. على عكس updateOne() التي تستخدم عوامل تحديث في وسيطها الثاني، فإن الوسيط الثاني هنا هو مستند الاستبدال نفسه — يُستبدل كل حقل ما عدا _id. تتضمن النتيجة matchedCount و modifiedCount. وهي الأداة الصحيحة عندما يجب إعادة كتابة بنية المستند بالكامل.

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

📝 الصيغة

db.<collection>.replaceOne(<filter>, <replacement>, { upsert: <bool> })

⚙️ المعلمات

شرط التصفيةشرط يطابق المستند المراد استبداله.
مستند جديدمستند الاستبدال الكامل؛ يستبدل كل الحقول عدا _id.
upsertاختياري. يُدرج عندما لا يتطابق شيء؛ الافتراضي false.

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

▶ مثال

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

// replaceOne: استبدال مستند Bob بالكامل
db.users.replaceOne(
  { name: 'Bob' },
  { name: 'Bob', age: 26, city: 'Shanghai', vip: true }
)

المخرجات:

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

📌 ملاحظات

مزيد من الحالات العملية قريبًا.

📚 دروس ذات صلة

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

Qما الفرق بين replaceOne و updateOne؟
Aتغيّر updateOne() الحقول تدريجيًا بعوامل التحديث؛ بينما تستبدل replaceOne() المستند بمستند جديد كامل، مع الكتابة فوق كل حقل ما عدا _id.
Qهل يمكن أن تغيّر replaceOne حقل _id؟
Aلا. _id غير قابل للتغيير؛ يجب أن يحتفظ مستند الاستبدال بـ _id الأصلي وإلا يُرفع خطأ.
Qهل يمكن وضع عوامل تحديث في الوسيط الثاني لـ replaceOne؟
Aلا. الوسيط الثاني هو مستند الاستبدال؛ فـ {$set: ...} سيُخزَّن حرفيًا كحقل.
Web-Tutorial.com

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

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

100%