[Tutoriel] MongoDB : Insérer, supprimer et mettre à jour des documents

Afin de vous faire découvrir MongoDB, je vous propose une série d’articles. Après le tutoriel « MongoDB : examiner les fonctionnalités de requêtage« , nous aborderons aujourd’hui les fonctions d’insertion, de suppression et d’update.

[Tutoriel] MongoDB : Insérer, supprimer et mettre à jour des documents

Insérer des documents dans MongoDB

On va commencer par insérer un document grâce à la fonction insertOne().

Tutoriel MongoDB 2 - insert One 1

Quand on regarde la collection, on peut constater que MongoDB, a bien inséré le document. Il a créé également une clé, nommée id

Tutoriel MongoDB 2 - insert One 2

 

Si l’on refait la même insertion, on obtient le résultat suivant:

Tutoriel MongoDB 2 - double-insert

 

MongoDB a inséré un deuxième document. Le système n’a pas détecté de doublon: il a généré une clé différente pour les deux enregistrements.

On peut décider de prendre la main et de décider nous même de la clé id.

Tutoriel MongoDB 2 - insert-withkey

 

Si j’insère un document avec le même id, cela génère une erreur car la clé n’est plus unique.

Tutoriel MongoDB 2 - error-insert

Je peux également insérer un document avec une structure différente dans la même collection sans que cela ne pose de problème. (Par exemple avec un champ âge supplémentaire).

Tutoriel MongoDB 2 - nosql

MongoDB fait partie de la grande famille des bases NoSQL. Nous n’avons pas eu besoin de déclarer de structure pour notre collection avant d’insérer des documents. Cette souplesse permet à MongoDB de s’adapter très facilement aux évolutions d’applications.

Il est possible d’insérer plusieurs documents en même temps. On va passer en argument un tableau de documents à la fonction insert().

Tutoriel MongoDB 2 - insertMany

 

Supprimer des documents dans MongoDB

Pour supprimer une collection, on utilise la fonction drop().
On peut vérifier ensuite que la collection ne contient plus aucun document.

Tutoriel MongoDB 2 - drop

Si on ne souhaite pas supprimer la collection mais uniquement certains documents, on va utiliser la fonction deleteOne() ou deleteMany().

Comment choisir les documents à supprimer ? Par une condition que l’on va passer comme argument de notre requête. Nous allons peupler de nouveau notre collection test.

Tutoriel MongoDB 2 - insert-total

Voilà les documents présents :

Tutoriel MongoDB 2 - find-total

Imaginons que je veuille sélectionner le deuxième document portant le nom stephane.
Je commence par faire une requête pour sélectionner le document qui m’intéresse. Une fois la condition validée, je peux remplacer la fonction find() par la fonction deleteOne().

Tutoriel MongoDB 2 - deleteOne

 

Mettre à jour des documents dans MongoDB

MongoDB met à disposition la fonction update avec différents opérateurs en fonction du type de mise à jour souhaité. La fonction update prend deux arguments obligatoires :

  • un document représentant la condition de recherche des documents de la collection
  • un document représentant la mise à jour souhaitée

Ajouter ou remplacer un champ existant avec $set

Tutoriel MongoDB 2 - update-set

Dans cet exemple, on a simplement rajouté un champ ville dans le document de Jacques.

Rajoutons un document dans notre collection :

Tutoriel MongoDB 2 - update-insert
Faisons une mise à jour sur les documents portant le nom stephane.

Tutoriel MongoDB 2 - update-many1

Le résultat de la commande montre qu’un seul document a été mis à jour. La commande find montre que le premier document avec le nom « stephane » a bien été modifié mais pas le second. C’est une protection dans MongoDB pour empêcher par défaut la mise à jour sur de multiples documents. Si c’est ce que l’on souhaite, il faut rajouter une instruction multi: true dans notre fonction update.

Tutoriel MongoDB 2 - update-inc

 

Incrémenter un champ numérique existant avec $inc

Dans certains cas, on peut avoir envie de faire une mise à jour en se basant sur la valeur actuelle du champ. $inc permet de rajouter une valeur à une donnée numérique. Cette valeur peut être positive ou négative.
Si je souhaite par exemple incrémenter l’âge de Paul, je peux exécuter la commande suivante :

Incrémenter un champ numérique existant avec $inc

 

Mettre à jour un tableau avec $push ou $pull

Si j’utilise $set sur un tableau, je vais remplacer le tableau existant par un nouvelle élément. Comment mettre à jour le tableau sans écraser les données existantes ?
L’opérateur $push permet de rajouter un nouvel élément à un tableau.

Tutoriel MongoDB 2 - update-push

Dans cet exemple, j’ai rajouté « nantes » dans le tableau contenant déjà « paris » et « nice ». Il faut noter que si « Nantes » était déjà présent, l’élément aurait été quand même inséré. Si l’on ne souhaite pas de doublon, il existe l’opérateur $addToSet qui assure cette fonction.

Pour supprimer un élément, on peut utiliser $pull. Ainsi, si je souhaite supprimer la ville de « nice », je lance la commande suivante :

Tutoriel MongoDB 2 - update-pull

Il existe bien d’autres opérateurs et je vous invite à consulter la documentation officielle pour en connaître la liste exhaustive.

Ceci termine ce deuxième tutoriel sur MongoDB. Dans un prochain article, nous étudierons l’indexation et certains aspects liés à la performance des requêtes.

 

  • A propos
  • Derniers articles

Il n'existe pas de commentaire pour le moment.

Laissez un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

*