下面是数组结构
contact: {
phone: [
{
number: "+1786543589455",
place: "New Jersey",
createdAt: ""
}
{
number: "+1986543589455",
place: "Houston",
createdAt: ""
}
]
}
在这里,我只知道mongo id(_id
)和电话号码(+1786543589455
),我需要从文档中删除整个相应的数组元素。即phone数组中的零个索引元素与电话号码匹配,需要移除对应的数组元素。
contact: {
phone: [
{
number: "+1986543589455",
place: "Houston",
createdAt: ""
}
]
}
我尝试了下面的update方法
collection.update(
{ _id: id, 'contact.phone': '+1786543589455' },
{ $unset: { 'contact.phone.$.number': '+1786543589455'} }
);
但它从内部数组对象中删除了number: +1786543589455
,而不是phone数组中的零索引元素。尝试使用pull
也没有成功。
如何删除mongodb中的数组元素?
发布于 2013-06-06 18:25:10
尝试执行以下查询:
collection.update(
{ _id: id },
{ $pull: { 'contact.phone': { number: '+1786543589455' } } }
);
它将查找具有给定_id
的文档,并从其contact.phone
数组中删除电话+1786543589455
。
您可以使用$unset
取消设置数组中的值(将其设置为null
),但不能将其完全删除。
发布于 2017-03-23 18:18:12
下面的代码将从数组中删除完整的对象元素,其中电话号码为'+1786543589455‘
db.collection.update(
{ _id: id },
{ $pull: { 'contact': { number: '+1786543589455' } } }
);
发布于 2018-08-23 17:18:53
您可以简单地使用$pull来删除子文档。$pull运算符从现有数组中删除与指定条件匹配的一个或多个值的所有实例。
Collection.update({
_id: parentDocumentId
}, {
$pull: {
subDocument: {
_id: SubDocumentId
}
}
});
这将根据给定的ID查找父文档,然后从subDocument中删除与给定条件匹配的元素。
阅读有关pull here的更多信息。
https://stackoverflow.com/questions/16959099
复制相似问题