MongoDB est une base de données NoSQL relativement simple à prendre en main et très riche fonctionnellement. Elle permet d’adresser les problématiques de temps réel dans un contexte Big Data (mise en cluster, haute disponibilité, tolérance aux pannes). A partir de MongoDB, on peut construire des applications web destinées à une large audience.

Afin de vous faire découvrir MongoDB, je vous propose donc une série d’articles. Pour ce deuxième tutoriel, nous allons aborder les fonctions d’insertion, de suppression et d’update.

Insérer des documents dans MongoDB

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

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

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

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.

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

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).

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 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.

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.

Voilà les documents présents:

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().

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

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

Rajoutons un document dans notre collection:

Faisons une mise à jour sur les documents portant le nom stephane.

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.

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:

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.

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:

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.