Voici la structure du tableau
contact: {
phone: [
{
number: "+1786543589455",
place: "New Jersey",
createdAt: ""
}
{
number: "+1986543589455",
place: "Houston",
createdAt: ""
}
]
}
Ici, je ne connais que l'identifiant 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 zéro élément indexé dans le tableau de téléphone correspond 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 de tableau interne, pas zéro élément indexé dans le tableau de téléphone. Essayé avec pull
également sans succès.
Comment supprimer l'élément de tableau dans mongodb?
{ $pull: { 'contact.phone.$': { 'contact.phone.$.number': '+1786543589455' } } }
et{ $pull: { 'contact.phone': { 'contact.phone.$.number': '+1786543589455' } } }
sans succès. Ne comprend pas le fonctionnement des opérateurs positionnels ici?.update()
met à jour un seul document. Pour mettre à jour plusieurs documents, utilisez l'{ multi: true }
option. Voir ladb.collection.update
documentation pour plus de détails .Ce code ci-dessous supprimera l'élément d'objet complet du tableau, où le numéro de téléphone est '+1786543589455'
la source
Dans Mongoose: du document :
Voir la réponse de Leonid Beschastny pour la bonne réponse.
la source
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 des valeurs qui correspondent à une condition spécifiée.
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 .
la source
Si vous utilisez l'API Mongoose et que vous cherchez à extraire un objet sous / enfant: Lisez ce document N'oubliez pas d'utiliser save () lorsque vous avez terminé l'édition sinon les modifications ne seront pas enregistrées dans la base de données.
la source