这是阵列结构
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中的数组元素?
3 回答
请尝试以下查询:
它将找到具有给定
_id
的文档,并从其contact.phone
数组中删除手机+1786543589455
.您可以使用
$unset
取消设置数组中的值(将其设置为null
),但不能完全删除它 .以下代码将从数组中删除完整的对象元素,其中电话号码为“1786543589455”
您只需使用$ pull删除子文档即可 . $ pull运算符从现有数组中删除与指定条件匹配的值的所有实例 .
这将根据给定的ID找到您的父文档,然后将从subDocument中删除与给定条件匹配的元素 .
阅读更多关于拉here的信息 .