NoSQL Databases • المستوى الأول • الدرس 4
العودة لفهرس المستوىتحديث وحذف المستندات (Update & Delete)
أهداف الدرس
- استخدام
updateOne()وupdateMany()لتعديل المستندات. - إتقان معاملات التحديث:
$set،$inc،$unset،$push. - حذف المستندات بـ
deleteOne()وdeleteMany(). - فهم الفرق بين التحديث الجزئي والاستبدال الكامل.
1. updateOne() vs updateMany()
updateOne()
- يُحدّث أول مستند فقط مطابق
- يقبل
filter+update - يُرجع
modifiedCount: 0 أو 1 - مثالي للتعديلات الفردية
updateMany()
- يُحدّث جميع المستندات المطابقة
- يقبل
filter+update - يُرجع
modifiedCount: N - مثالي للتعديلات الجماعية
2. معاملات التحديث (Update Operators)
$set — تعيين قيمة
{ $set: {
age: 31,
city: "الرياض"
} }$inc — زيادة رقمية
{ $inc: { age: 1 } }
// زيادة age بـ 1$unset — حذف حقل
{ $unset: { country: "" } }
// يحذف الحقل country$push — إضافة لمصفوفة
{ $push: {
skills: "Tailwind"
} }3. حذف المستندات — deleteOne() و deleteMany()
deleteOne()
- يحذف أول مستند مطابق
- يُرجع
deletedCount: 0 أو 1 deleteOne({ age: 30 })
deleteMany()
- يحذف جميع المطابقين
- يُرجع
deletedCount: N deleteMany({ country: "مصر" })
تحذير أمني
db.users.deleteMany({}); // يحذف كل شيء!deleteMany({}) بدون فلتر = مسح كامل للمجموعة. في الإنتاج، استخدم حذراً شديداً.
4. updateOne vs replaceOne — فرق حرج
javascript
// updateOne مع $set = تعديل جزئي
db.users.updateOne(
{ name: "جمال" },
{ $set: { age: 31 } }
);
// النتيجة: يبقى email، country، ... كما هي
// updateOne بدون معاملات = استبدال كامل
db.users.updateOne(
{ name: "جمال" },
{ age: 31 }
);
// النتيجة: جميع الحقول الأخرى تُحذف! التطبيق العملي المباشر
تحدي الدرس الرابع: إدارة التحديث والحذف
قم بالتعديل على الكود بداخل المحرر أدناه لتطبيق المتطلبات التالية:
- حدّث عمر
جمال سالمإلى31باستخدامupdateOne+$set. - زد أعمار جميع المستخدمين بـ
1باستخدامupdateMany+$inc. - احذف حقل
countryمن مستخدم معيّن بـ$unset. - احذف مستخدماً واحداً بـ
deleteOne. - احذف مجموعة مستخدمين بـ
deleteMany.
⏳ جارٍ تحميل المحرر التفاعلي...