นี่คือโครงสร้างอาร์เรย์
contact: {
phone: [
{
number: "+1786543589455",
place: "New Jersey",
createdAt: ""
}
{
number: "+1986543589455",
place: "Houston",
createdAt: ""
}
]
}
ที่นี่ฉันรู้แค่รหัส mongo ( _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 ได้อย่างไร?
{ $pull: { 'contact.phone.$': { 'contact.phone.$.number': '+1786543589455' } } }
และ{ $pull: { 'contact.phone': { 'contact.phone.$.number': '+1786543589455' } } }
ไม่ประสบความสำเร็จ ไม่เข้าใจการทำงานของตัวดำเนินการตำแหน่งที่นี่?