这里是数组结构
contact: {
phone: [
{
number: "+1786543589455",
place: "New Jersey",
createdAt: ""
}
{
number: "+1986543589455",
place: "Houston",
createdAt: ""
}
]
}
这里我只知道mongo的id(_id
)和电话号码(+1786543589455
),我需要从document中删除整个对应的数组元素。即电话数组中的零索引元素与电话号码相匹配,并且需要移除相应的数组元素。
contact: {
phone: [
{
number: "+1986543589455",
place: "Houston",
createdAt: ""
}
]
}
我尝试了以下更新方法
collection.update(
{ _id: id, 'contact.phone': '+1786543589455' },
{ $unset: { 'contact.phone.$.number': '+1786543589455'} }
);
但是它从内部数组对象中删除了number: +1786543589455
,而不是电话数组中的零索引元素。用pull
也试过,没有成功。
如何在mongodb中删除数组元素?
6条答案
按热度按时间ecr0jaav1#
给定配置文件集合中的以下文档:
以下操作将从votes数组中删除所有大于或等于($gte)6的项:
更新操作后,文档只有小于6的值:
如果你有多个项目具有相同的值,你应该使用$pullAll而不是$pull。
在问题中有多个联系号码相同使用此:
它将删除与联系电话中的该号码匹配的每个项目。
试着阅读手册。
cdmah0mi2#
请尝试以下查询:
它将查找具有给定
_id
的文档,并从其contact.phone
数组中删除电话+1786543589455
。您可以使用
$unset
取消设置数组中的值(将其设置为null
),但不能完全删除它。gwo2fgha3#
您可以简单地使用$pull来删除子文档。$pull运算符从现有数组中删除与指定条件匹配的一个或多个值的所有示例。
这将根据给定的ID查找您的父文档,然后从子文档中删除与给定条件匹配的元素。
阅读更多关于拉这里.
xmakbtuz4#
在 Mongoose 中:从文件:
要从子文档数组中删除一个文档,我们可以传递一个带有matching _id的对象。
**请参阅Leonid Beschastny的答案,以获得正确答案。
iklwldmw5#
要删除所有数组元素,而不管任何给定的id,使用这个:
7kjnsjlb6#
要从特定文档中删除所有匹配的数组元素,请执行以下操作:
从所有文档中删除所有匹配的数组元素: