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.
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 insert()
.
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.
👉 Retrouvez toute notre actu en temps réel en nous suivant sur LinkedIn 👈
Commentaires (5)
Votre adresse de messagerie est uniquement utilisée par Business & Decision, responsable de traitement, aux fins de traitement de votre demande et d’envoi de toute communication de Business & Decision en relation avec votre demande uniquement. En savoir plus sur la gestion de vos données et vos droits.
merci
Pour tous les documents excédant les 16 Mo, il faut passer par un outil tiers GridFs.
Pour plus d'information, tu peux te reporter à la documentation Mongo https://docs.mongodb.com/manual/core/gridfs/index.html
Merci pour cet article pédagogique.
Remarque amicale: La capture d'écran de l'exemple d'update en utilisant l'option "multi" correspond en réalité à l'update incrémental d'un champ numérique (présenté dans la section suivante).
Bien à vous.
Merci pour votre retour et votre remarque pertinente : c'est modifié !
Bien à vous