223 votes

Comment supprimer un élément d'un tableau dans mongodb ?

Voici la structure du tableau

contact: {
    phone: [
        {
            number: "+1786543589455",
            place: "New Jersey",
            createdAt: ""
        }
        {
            number: "+1986543589455",
            place: "Houston",
            createdAt: ""
        }

    ]
}

Ici, je connais seulement l'ID mongo (_id) et le numéro de téléphone (+1786543589455) et je dois supprimer tout l'élément de tableau correspondant du document. c'est-à-dire l'élément index zéro dans le tableau phone correspond au numéro de téléphone et doit supprimer l'élément du 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 cela supprime number: +1786543589455 de l'objet du tableau interne, pas l'élément index zéro dans le tableau phone. J'ai essayé avec pull aussi sans succès.

Comment supprimer l'élément du tableau dans mongodb?

3voto

Donald French Points 138

Étant donné le document suivant dans la collection des profils :

{ 
   _id: 1, 
   votes: [ 3, 5, 6, 7, 7, 8 ] 
}

L'opération suivante va supprimer tous les éléments de la liste de votes qui sont supérieurs ou égaux à ($gte) 6 :

db.profiles.update( { _id: 1 }, { $pull: { votes: { $gte: 6 } } } )

Après l'opération de mise à jour, le document ne contient que des valeurs inférieures à 6 :

{ 
   _id: 1, 
   votes: [  3,  5 ] 
}

Si vous avez plusieurs éléments avec la même valeur, vous devriez utiliser $pullAll au lieu de $pull.

Dans le cas d'avoir plusieurs numéros de contact identiques, utilisez ceci :

collection.update(
  { _id: id },
  { $pullAll: { 'contact.phone': { number: '+1786543589455' } } }
);

Cela va supprimer tous les éléments correspondant à ce numéro dans les contacts téléphoniques.

Essayez de lire le manuel.

0 votes

Dans la question ayant un numéro de fax et un numéro vocal, utilisez le même

-2voto

NonameLover Points 68

Si vous utilisez l'API Mongoose et que vous cherchez à extraire un sous-objet/enfant : Lisez ce document N'oubliez pas d'utiliser save() lorsque vous avez fini d'éditer sinon les modifications ne seront pas enregistrées dans la base de données.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X