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?

91
demandé sur Justin John 2013-06-06 13:58:19

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.

167
répondu Leonid Beschastny 2013-06-06 10:25:10

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' } } }
);
9
répondu chirag jain 2017-03-23 10:18:12

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 .

0
répondu Aimen Batool 2018-08-23 09:18:53