$pull (إزالة العناصر المطابقة)
آخر تحديث: 2026-10-09
$pull (إزالة العناصر المطابقة)
يزيل $pull من مصفوفة كل عنصر يساوي قيمة أو يحقق شرطًا. فالعبارة `{ $pull: { tags: 'spam' } }` تزيل كل 'spam'؛ و`{ $pull: { scores: { $lt: 60 } } }` تزيل كل درجة أقل من 60. يزيل كل المطابقات، وليس واحدة فقط — الأداة القياسية لتنظيف المصفوفات.
| الفئة | تحديث المصفوفة |
|---|---|
| إصدار MongoDB | 1.0+ |
| لغة المثال | mongosh (الطرفية) |
📝 الصيغة
{ $pull: { <array field>: <value> | <condition> } }
⚙️ المعلمات
| حقل مصفوفة | حقل المصفوفة المراد تنظيفه. |
|---|---|
| قيمة أو شرط | قيمة تساوٍ أو شرط استعلام، مثل 'spam' أو { $lt: 60 }. |
القيمة المرجعة:نتيجة التحديث
▶ مثال
نفّذ الأوامر التالية في mongosh المحلي لديك (يتطلب تشغيل mongod):
// $pull: إزالة كل وسوم spam
db.articles.updateOne(
{ _id: 1 },
{ $pull: { tags: 'spam' } }
)
// إزالة الدرجات الأقل من 60
db.students.updateOne(
{ _id: 1 },
{ $pull: { scores: { $lt: 60 } } }
)
المخرجات:
// تُزال كل وسوم spam وكل الدرجات الأقل من 60
📌 ملاحظات
- يزيل كل عنصر مطابق، وليس عنصرًا واحدًا
- الشروط تقبل العوامل ($lt، $in، $gt وغيرها)
- لمصفوفات المستندات، طابق على حقولها
🏷️ وسوم ذات صلة
💡 حالات ذات صلة
استعلامات المصفوفات والوثائق المتداخلة
تجربة عملية: عمليات CRUD لنظام تعليقات المدونة
تحديث المستند: شرح مفصل لـ `updateOne` و`updateMany`
📚 دروس ذات صلة
❓ الأسئلة الشائعة
Qما الفرق بين $pull و $pop؟
Aيزيل $pull حسب القيمة أو الشرط في أي موضع؛ بينما يزيل $pop الأول أو الأخير فقط.
Qهل يمكن لـ $pull الإزالة حسب شرط؟
Aنعم، الشروط تدعم عوامل الاستعلام، مثل { $pull: { scores: { $lt: 60 } } }.
Qهل يزيل $pull كل المطابقات أم واحدة فقط؟
Aتُزال كل العناصر المطابقة.