MongoDB,从数组中删除对象

2022-08-30 05:38:56

医生:

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

有没有办法从数组中提取特定对象?即,如何从 items 数组中提取 ID 为 23 的整个 item 对象。

我试过:

db.mycollection.update({'_id': ObjectId("5150a1199fac0e6910000002")}, {$pull: {id: 23}});

但是,我很确定我没有正确使用“拉动”。据我所知,pull将从数组中拉出一个字段,而不是一个对象。

任何想法如何将整个对象从数组中拉出。

作为奖励,我试图在猫鼬/ nodejs中执行此操作,也不确定这种类型的东西是否在猫鼬API中,但我找不到它。


答案 1

尝试。。

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

答案 2

我有一个像这样的文档

enter image description here

我必须从地址数组中删除地址

在互联网上搜索了很多之后,我找到了解决方案

Customer.findOneAndUpdate(query, { $pull: {address: addressId} }, (err, data) => {
    if (err) {
        return res.status(500).json({ error: 'error in deleting address' });
    }

    res.json(data);
});