这里是数组结构
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
,而不是 phone 数组中的零索引元素。尝试使用 pull
也没有成功。
如何去除mongodb中的数组元素?
最佳答案
尝试以下查询:
collection.update(
{ _id: id },
{ $pull: { 'contact.phone': { number: '+1786543589455' } } }
);
它将找到具有给定 _id
的文档,并从其 contact.phone
数组中删除电话 +1786543589455
。
您可以使用 $unset
取消设置数组中的值(将其设置为 null
),但不能完全删除它。
https://stackoverflow.com/questions/16959099/