Comment supprimer l'élément de tableau dans mongodb?
Voici la structure du tableau
contact: {
phone: [
{
number: "+1786543589455",
place: "New Jersey",
createdAt: ""
}
{
number: "+1986543589455",
place: "Houston",
createdAt: ""
}
]
}
Ici, Je ne connais que l'id mongo(_id
) et le numéro de téléphone(+1786543589455
) et je dois supprimer tout cet élément de tableau correspondant du document. c'est-à-dire que l'élément indexé zéro dans le tableau de téléphone est associé au numéro de téléphone et doit supprimer l'élément de tableau correspondant.
contact: {
phone: [
{
number: "+1986543589455",
place: "Houston",
createdAt: ""
}
]
}
J'ai essayé avec la méthode de mise à jour suivante
collection.update(
{ _id: id, 'contact.phone': '+1786543589455' },
{ $unset: { 'contact.phone.$.number': '+1786543589455'} }
);
Mais il supprime number: +1786543589455
de l'objet tableau interne, pas l'élément indexé zéro dans le tableau de téléphone. Essayé avec pull
aussi sans succès.
Comment supprimer l'élément de tableau dans mongodb?
3 réponses
Essayez la requête suivante:
collection.update(
{ _id: id },
{ $pull: { 'contact.phone': { number: '+1786543589455' } } }
);
Il trouvera le document avec le _id
donné et supprimera le téléphone +1786543589455
de son tableau contact.phone
.
, Vous pouvez utiliser $unset
pour annuler la valeur dans le tableau (mis à null
), mais pas de l'éliminer complètement.
Ce code ci-dessous supprimera l'élément objet complet du tableau, où le numéro de téléphone est '+ 1786543589455 '
db.collection.update(
{ _id: id },
{ $pull: { 'contact': { number: '+1786543589455' } } }
);
Vous pouvez simplement utiliser $pull pour supprimer un sous-document. L'opérateur $ pull supprime d'un tableau existant toutes les instances d'une valeur ou de valeurs qui correspondent à une condition spécifiée.
Collection.update({
_id: parentDocumentId
}, {
$pull: {
subDocument: {
_id: SubDocumentId
}
}
});
Cela trouvera votre document parent par rapport à l'ID donné, puis supprimera l'élément du sous-document qui correspond aux critères donnés.
En savoir plus sur pull ici .