Revenons sur la collection MongoDB qui nous sert d’exemple depuis le début et effectuons quelques opérations de mise à jour élémentaires. Voici donc pour rappel à quoi ressemble notre collection :
sebastien.ferrandez@sebastien:~$ mongo MongoDB shell version: 2.0.6 connecting to: test > show dbs; admin 0.203125GB gens 0.203125GB local (empty) > use gens; switched to db gens > db.gens.find(); { "_id" : ObjectId("517a850cb1d6ce34f91af2d1"), "nom" : "ferrandez" } { "_id" : ObjectId("517a851eb1d6ce34f91af2d2"), "nom" : "ferrandez", "prenom" : "léo" } { "_id" : ObjectId("517a856bb1d6ce34f91af2d4"), "nom" : "ferrandez", "prenom" : "maïa", "age" : 6 }
Opérations de mise à jour
Avec inc
Supposons qu’il nous faille mettre à jour l’âge d’une personne : aujourd’hui c’est l’anniversaire de Maïa, elle a 7 ans ! Voici plusieurs façons de faire : tout d’abord nous incrémentons la clé age de nos documents pour lesquels age est supérieur à 5.
db.gens.update({ age:{$gt: 5}}, {$inc: {age: 1}});
Avec set
Nous ciblons uniquement le prénom
db.gens.update({ prenom: "maïa"}, {$set: {age: 7}});
Nous faisons un mélange des deux précédentes requêtes :
db.gens.update({ age:{$gt: 5}}, {$set: {age: 7}});
Opérations de suppression
Suppression par ObjectId
> db.gens.find(); { "_id" : ObjectId("517a850cb1d6ce34f91af2d1"), "nom" : "ferrandez" } { "_id" : ObjectId("517a851eb1d6ce34f91af2d2"), "nom" : "ferrandez", "prenom" : "léo" } { "_id" : ObjectId("517e33cf4937f8d068f9e9aa"), "nom" : "ferrandez", "prenom" : "maïa", "age" : 7 } > db.gens.remove( {"_id": ObjectId("517e33cf4937f8d068f9e9aa")}); > db.gens.find(); { "_id" : ObjectId("517a850cb1d6ce34f91af2d1"), "nom" : "ferrandez" } { "_id" : ObjectId("517a851eb1d6ce34f91af2d2"), "nom" : "ferrandez", "prenom" : "léo" }
Suppression par champ quelconque
Supprimons tous les gens qui s’appellent « ferrandez » :
> db.gens.find(); { "_id" : ObjectId("517a850cb1d6ce34f91af2d1"), "nom" : "ferrandez" } { "_id" : ObjectId("517a851eb1d6ce34f91af2d2"), "nom" : "ferrandez", "prenom" : "léo" } > db.gens.remove({nom: 'ferrandez'}); > db.gens.find();
Notez que cette fois-ci je n’ai pas mis de guillemets autour de la clé (nom) et j’ai mis des apostrophes autour du nom pour que vous voyez bien qu’il n’est pas obligatoire de mettre tout ça entre guillemets systématiquement !
Suppression de la première occurrence seulement
En mettant justOne à 1 (le premier paramètre), seul le premier document satisfaisant aux critères sera supprimé :
> db.gens.find(); { "_id" : ObjectId("517e36c14937f8d068f9e9ab"), "nom" : "ferrandez", "prenom" : "maïa", "age" : 7 } { "_id" : ObjectId("517e36e54937f8d068f9e9ac"), "nom" : "ferrandez", "prenom" : "sébastien" } > db.gens.remove({nom: 'ferrandez'}, 1); > db.gens.find(); { "_id" : ObjectId("517e36e54937f8d068f9e9ac"), "nom" : "ferrandez", "prenom" : "sébastien" }
Suppression de l’intégralité des documents d’une collection
> db.gens.remove();
Voilà ! Pour ceux d’entre vous qui ont déjà des connaissances en langage SQL, vous avez les bases pour débuter avec MongoDB. Nous allons bientôt rentrer en détail dans le fonctionnement de MongoDB et en particulier nous attarder sur l’aspect dénormalisation !
très bel article. merci pour le partage