这是阵列结构
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中的数组元素?
文档:
{
_id: 5150a1199fac0e6910000002,
name: 'some name,
items: [{
id: 23,
name: 'item name 23'
},{
id: 24,
name: 'item name 24'
}]
}
Run Code Online (Sandbox Code Playgroud)
有没有办法从数组中提取特定对象?IE如何从items数组中提取id为23的整个item对象.
我试过了:
db.mycollection.update({'_id': ObjectId("5150a1199fac0e6910000002")}, {$pull: {id: 23}});
Run Code Online (Sandbox Code Playgroud)
但是我很确定我没有正确使用'pull'.根据我的理解,pull将从数组中提取字段而不是对象.
任何想法如何将整个对象拉出阵列.
作为奖励,我试图在mongoose/nodejs中执行此操作,并且不确定这种类型的东西是否在mongoose API中但我找不到它.