Maison >interface Web >js tutoriel >Comment supprimer un objet spécifique d'un tableau dans MongoDB ?

Comment supprimer un objet spécifique d'un tableau dans MongoDB ?

DDD
DDDoriginal
2024-11-02 07:26:291042parcourir

How to Remove a Specific Object from an Array in MongoDB?

MongoDB : Supprimer un objet d'un tableau

Problème :

Dans MongoDB, comment extraire un objet spécifique à partir d'un tableau intégré dans un document ? Dans le document d'exemple, nous souhaitons supprimer l'objet avec l'identifiant : 23 du tableau items.

Solution :

Pour y parvenir, utilisez l'opérateur $pull avec une requête plus spécifique pour faire correspondre l'objet souhaité dans le tableau.

Requête MongoDB :

db.mycollection.update(
    { '_id': ObjectId("5150a1199fac0e6910000002") }, 
    { $pull: { items: { id: 23 } } },
    false, // Upsert
    true // Multi
);

Explication :

  • Opérateur $pull : utilisé pour supprimer un élément d'un tableau.
  • { items: { id: 23 } } : Spécifiez l'objet imbriqué à supprimer en faisant correspondre son champ spécifique.
  • Upsert : défini sur false pour empêcher la création d'un nouveau document si la mise à jour ne correspond à aucun document existant.
  • Multi : défini sur true pour appliquer la mise à jour à plusieurs documents correspondants (bien qu'il ne devrait y avoir qu'une seule correspondance dans ce cas).

Node.js/Mongoose :

Dans Mongoose, vous pouvez utiliser la requête suivante :

<code class="javascript">MyModel.findOneAndUpdate(
  { '_id': '5150a1199fac0e6910000002' },
  { $pull: { items: { id: 23 } } },
  { multi: true }
);</code>

Remarque : MongoDB 3.6 prend également en charge l'opérateur $elemMatch en conjonction avec $pull pour un filtrage plus complexe au sein des tableaux.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn