NahdaAIنهضة
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 }
);
// النتيجة: جميع الحقول الأخرى تُحذف!
التطبيق العملي المباشر

تحدي الدرس الرابع: إدارة التحديث والحذف

قم بالتعديل على الكود بداخل المحرر أدناه لتطبيق المتطلبات التالية:

  1. حدّث عمر جمال سالم إلى 31 باستخدام updateOne + $set.
  2. زد أعمار جميع المستخدمين بـ 1 باستخدام updateMany + $inc.
  3. احذف حقل country من مستخدم معيّن بـ $unset.
  4. احذف مستخدماً واحداً بـ deleteOne.
  5. احذف مجموعة مستخدمين بـ deleteMany.
⏳ جارٍ تحميل المحرر التفاعلي...