这是阵列结构
contact: {
phone: [
{
number: "+1786543589455",
place: "New Jersey",
createdAt: ""
}
{
number: "+1986543589455",
place: "Houston",
createdAt: ""
}
]
}
Run Code Online (Sandbox Code Playgroud)
在这里我只知道mongo id(_id
)和电话号码(+1786543589455
),我需要从文档中删除整个相应的数组元素.即手机阵列中的零索引元素与电话号码匹配,需要删除相应的数组元素.
contact: {
phone: [
{
number: "+1986543589455",
place: "Houston",
createdAt: ""
}
]
}
Run Code Online (Sandbox Code Playgroud)
我尝试了以下更新方法
collection.update(
{ _id: id, 'contact.phone': '+1786543589455' },
{ $unset: { 'contact.phone.$.number': '+1786543589455'} }
);
Run Code Online (Sandbox Code Playgroud)
但它number: +1786543589455
从内部数组对象中移除 ,而不是手机数组中的零索引元素.试图pull
也没有成功.
如何删除mongodb中的数组元素?
Leo*_*tny 209
请尝试以下查询:
collection.update(
{ _id: id },
{ $pull: { 'contact.phone': { number: '+1786543589455' } } }
);
Run Code Online (Sandbox Code Playgroud)
它将找到带有给定的文档_id
并+1786543589455
从其contact.phone
阵列中删除手机.
您可以使用$unset
取消设置数组中的值(将其设置为null
),但不能完全删除它.
小智 12
以下代码将从数组中删除完整的对象元素,其中电话号码为"+1786543589455"
db.collection.update(
{ _id: id },
{ $pull: { 'contact': { number: '+1786543589455' } } }
);
Run Code Online (Sandbox Code Playgroud)
小智 8
您只需使用 $pull 即可删除子文档。$pull 运算符从现有数组中删除与指定条件匹配的一个或多个值的所有实例。
Collection.update({
_id: parentDocumentId
}, {
$pull: {
subDocument: {
_id: SubDocumentId
}
}
});
Run Code Online (Sandbox Code Playgroud)
这将根据给定 ID 查找您的父文档,然后从子文档中删除与给定条件匹配的元素。
在此处阅读有关 pull 的更多信息。
在 Mongoose 中:来自文档:
要从子文档数组中删除文档,我们可以传递一个具有匹配 _id 的对象。
contact.phone.pull({ _id: itemId }) // remove
contact.phone.pull(itemId); // this also works
Run Code Online (Sandbox Code Playgroud)
请参阅 Leonid Beschastny 的答案以获得正确答案。
归档时间: |
|
查看次数: |
105611 次 |
最近记录: |