如何删除MongoDB中的数组元素?
这是数组结构
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中的数组元素?
尝试以下查询:
collection.update( { _id: id }, { $pull: { 'contact.phone': { number: '+1786543589455' } } } );
它会find给定的_id
文件,并+1786543589455
数组中删除电话+1786543589455
。
您可以使用$unset
来取消数组中的值(将其设置为null
),但不能将其完全删除。
下面的代码将从数组中删除完整的对象元素,其中电话号码是“+1786543589455”
db.collection.update( { _id: id }, { $pull: { 'contact': { number: '+1786543589455' } } } );