"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيف يمكنني إزالة كائن من مصفوفة في MongoDB؟

كيف يمكنني إزالة كائن من مصفوفة في MongoDB؟

تم النشر بتاريخ 2024-11-19
تصفح:621

How do I remove an object from an array in MongoDB?

MongoDB: إزالة كائن من صفيف

في MongoDB، يمكنك إزالة كائن من مصفوفة مضمنة في مستند باستخدام $ عامل السحب. إذا كنت ترغب في إزالة كائن معين من مصفوفة، فأنت بحاجة إلى تقديم استعلام يطابق الكائن المحدد.

ضع في اعتبارك المستند التالي:

{
   _id: 5150a1199fac0e6910000002,
   name: 'some name',
   items: [{
      id: 23,
      name: 'item name 23'
   },{
      id: 24,
      name: 'item name 24'
   }]
}

لإزالة العنصر بالمعرف: 23 من مصفوفة العناصر، استخدم الأمر التالي:

db.mycollection.update(
    { '_id': ObjectId("5150a1199fac0e6910000002") }, 
    { $pull: { items: { id: 23 } } },
    false, // Upsert
    true, // Multi
);

يقوم هذا الأمر بتحديث المستند عن طريق إزالة العنصر من المصفوفة. يحدد الاستعلام المستند باستخدام حقل _id، ويستهدف عامل السحب $ مصفوفة العناصر. ضمن عملية $pull، يمكنك تحديد استعلام لمطابقة الكائن المراد إزالته. في هذه الحالة، نقوم بمطابقة الكائن بالمعرف: 23.

Mongoose/Node.js Implementation

في Mongoose، يمكنك إزالة كائن من مصفوفة باستخدام الأمر طريقة pull():

const Model = mongoose.model('Model', new mongoose.Schema({
  items: [{
    id: Number,
    name: String
  }]
}));

Model.update(
  { '_id': '5150a1199fac0e6910000002' },
  { $pull: { items: { id: 23 } } },
  { multi: true }, // Update all matching documents
  (err, result) => { if (!err) console.log(result); }
);

سيؤدي هذا الرمز إلى إزالة العنصر بالمعرف: 23 من مجموعة العناصر لجميع المستندات التي تطابق المعرف _ المحدد.

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3