这是数组结构
contact: { phone: [ { number: "+1786543589455", place: "New Jersey", createdAt: "" } { number: "+1986543589455", place: "Houston", createdAt: "" } ] }
这里我只知道 mongo id( _id) 和电话号码( +1786543589455),我需要从文档中删除整个相应的数组元素。即电话数组中的零索引元素与电话号码匹配,需要删除相应的数组元素。
_id
+1786543589455
contact: { phone: [ { number: "+1986543589455", place: "Houston", createdAt: "" } ] }
我尝试了以下更新方法
collection.update( { _id: id, 'contact.phone': '+1786543589455' }, { $unset: { 'contact.phone.$.number': '+1786543589455'} } );
但它 number: +1786543589455从内部数组对象中删除,而不是电话数组中的零索引元素。试过pull也没有成功。
number: +1786543589455
pull
如何删除mongodb中的数组元素?
尝试以下查询:
collection.update( { _id: id }, { $pull: { 'contact.phone': { number: '+1786543589455' } } } );
它将找到具有给定文档的文档_id并将手机+1786543589455从其contact.phone数组中删除。
contact.phone
您可以使用$unset取消设置数组中的值(将其设置为null),但不能完全删除它。
$unset
null