que - Cómo eliminar el elemento de matriz en mongodb?
mongodb español (2)
Aquí hay una estructura de matriz
contact: {
phone: [
{
number: "+1786543589455",
place: "New Jersey",
createdAt: ""
}
{
number: "+1986543589455",
place: "Houston",
createdAt: ""
}
]
}
Aquí solo conozco el Id. De mongo ( _id
) y el número de teléfono ( +1786543589455
) y necesito eliminar ese elemento de matriz completo del documento. es decir, el elemento indexado cero en la matriz del teléfono se corresponde con el número de teléfono y necesita eliminar el elemento de matriz correspondiente.
contact: {
phone: [
{
number: "+1986543589455",
place: "Houston",
createdAt: ""
}
]
}
Intenté con el siguiente método de actualización
collection.update(
{ _id: id, ''contact.phone'': ''+1786543589455'' },
{ $unset: { ''contact.phone.$.number'': ''+1786543589455''} }
);
Pero elimina el number: +1786543589455
del objeto de la matriz interna, no el elemento indexado de cero en la matriz del teléfono. Intento pull
también sin éxito.
¿Cómo eliminar el elemento de matriz en mongodb?
Este código a continuación eliminará el elemento de objeto completo de la matriz, donde el número de teléfono es ''+1786543589455''
db.collection.update(
{ _id: id },
{ $pull: { ''contact'': { number: ''+1786543589455'' } } }
);
Pruebe la siguiente consulta:
collection.update(
{ _id: id },
{ $pull: { ''contact.phone'': { number: ''+1786543589455'' } } }
);
Encontrará el documento con el _id
dado y eliminará el teléfono +1786543589455
de su matriz contact.phone
.
Puede usar $unset
para deshacer el valor de la matriz (establecerlo en null
), pero no para eliminarlo por completo.