ここに配列構造があります
contact: {
phone: [
{
number: "+1786543589455",
place: "New Jersey",
createdAt: ""
}
{
number: "+1986543589455",
place: "Houston",
createdAt: ""
}
]
}
ここでは、mongo id(_id
)と電話番号(+1786543589455
)のみを知っており、対応する配列要素全体をドキュメントから削除する必要があります。つまり、phone配列のゼロのインデックス付き要素は電話番号と一致し、対応する配列要素を削除する必要があります。
contact: {
phone: [
{
number: "+1986543589455",
place: "Houston",
createdAt: ""
}
]
}
以下の更新方法で試してみました
collection.update(
{ _id: id, 'contact.phone': '+1786543589455' },
{ $unset: { 'contact.phone.$.number': '+1786543589455'} }
);
ただしnumber: +1786543589455
、内部の配列オブジェクトから削除さ れ、phone配列のインデックス付き要素はゼロではありません。pull
また、成功せずに試してみました。
mongodbの配列要素を削除するにはどうすればよいですか?
{ $pull: { 'contact.phone.$': { 'contact.phone.$.number': '+1786543589455' } } }
し、{ $pull: { 'contact.phone': { 'contact.phone.$.number': '+1786543589455' } } }
成功せず。ここで位置演算子の働きがわかりませんか?