小编典典

如何删除mongodb中的数组元素?

all

这是数组结构

contact: {
    phone: [
        {
            number: "+1786543589455",
            place: "New Jersey",
            createdAt: ""
        }
        {
            number: "+1986543589455",
            place: "Houston",
            createdAt: ""
        }

    ]
}

这里我只知道 mongo id( _id) 和电话号码(
+1786543589455),我需要从文档中删除整个相应的数组元素。即电话数组中的零索引元素与电话号码匹配,需要删除相应的数组元素。

contact: {
    phone: [
        {
            number: "+1986543589455",
            place: "Houston",
            createdAt: ""
        }
    ]
}

我尝试了以下更新方法

collection.update(
    { _id: id, 'contact.phone': '+1786543589455' },
    { $unset: { 'contact.phone.$.number': '+1786543589455'} }
);

但它 number: +1786543589455从内部数组对象中删除,而不是电话数组中的零索引元素。试过pull也没有成功。

如何删除mongodb中的数组元素?


阅读 91

收藏
2022-07-16

共1个答案

小编典典

尝试以下查询:

collection.update(
  { _id: id },
  { $pull: { 'contact.phone': { number: '+1786543589455' } } }
);

它将找到具有给定文档的文档_id并将手机+1786543589455从其contact.phone数组中删除。

您可以使用$unset取消设置数组中的值(将其设置为null),但不能完全删除它。

2022-07-16