如何删除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' } } } );