MongoDB - Mise à jour du document

Bonjour à tous, futurs magiciens des bases de données ! Aujourd'hui, nous plongeons dans le monde passionnant des mises à jour de documents MongoDB. En tant que votre enseignant bienveillant en informatique, je suis là pour vous guider à travers ce périple avec plein d'exemples et d'explications. Alors, prenez votre boisson favorite, asseyez-vous confortablement, et partons ensemble dans cette aventure MongoDB !

MongoDB - Update Document

Méthode MongoDB update()

Commençons par la méthode update() classique. Imaginez que vous avez une collection de livres dans votre base de données MongoDB, et que vous souhaitez mettre à jour le prix d'un livre spécifique. Voici comment vous pouvez le faire :

db.books.update(
{ title: "Gatsby le Magnifique" },
{ $set: { price: 12.99 } }
)

Dans cet exemple, nous demandons à MongoDB de trouver un livre avec le titre "Gatsby le Magnifique" et de régler son prix à 12.99. C'est comme aller dans une librairie et coller une nouvelle étiquette de prix sur un livre spécifique.

Mais attendez, il y a plus ! La méthode update() a quelques astuces dans son sac. Jetons un œil à un exemple plus complexe :

db.books.update(
{ author: "F. Scott Fitzgerald" },
{ $inc: { copiesSold: 100 }, $set: { bestseller: true } },
{ multi: true }
)

Ici, nous augmentons le champ 'copiesSold' de 100 et réglons 'bestseller' sur true pour tous les livres de F. Scott Fitzgerald. L'option 'multi: true' nous assure que nous mettons à jour tous les documents correspondants, et non pas seulement le premier.

Méthode MongoDB save()

Passons maintenant à la méthode save(). Cette méthode est comme un couteau suisse – elle peut soit insérer un nouveau document, soit mettre à jour un document existant. Voici un exemple :

db.books.save(
{
_id: ObjectId("507f1f77bcf86cd799439011"),
title: "Pour tuer un.mockingbird",
author: "Harper Lee",
year: 1960,
price: 10.99
}
)

Si un document avec cet _id existe déjà, il sera mis à jour. Sinon, un nouveau document sera inséré. C'est comme avoir un stylo magique qui écrit soit une nouvelle entrée dans votre catalogue de bibliothèque, soit met à jour une entrée existante !

Méthode MongoDB findOneAndUpdate()

La méthode findOneAndUpdate() est comme un détective qui trouve un document, le met à jour, et puis vous rapporte soit le document original, soit le document mis à jour. Voyons comment elle fonctionne :

db.books.findOneAndUpdate(
{ title: "1984" },
{ $set: { genre: "Roman dystopique" } },
{ new: true }
)

Cette méthode trouve le livre "1984", ajoute un genre, et retourne le document mis à jour (grâce à 'new: true'). C'est comme demander à votre bibliothécaire de trouver un livre, ajouter une étiquette de genre, et vous montrer le livre mis à jour.

Méthode MongoDB updateOne()

La méthode updateOne() est parfaite lorsque vous êtes sûr de vouloir mettre à jour uniquement un document. Voici comment vous pourriez l'utiliser :

db.books.updateOne(
{ title: "Le Petit Prince" },
{ $set: { status: "Prêté" }, $inc: { timesCheckedOut: 1 } }
)

Cela met à jour le statut de "Le Petit Prince" à "Prêté" et incrémente le compteur 'timesCheckedOut'. C'est comme mettre à jour le statut d'un seul livre dans votre système de bibliothèque.

Méthode MongoDB updateMany()

Enfin, nous avons updateMany(). Cette méthode est géniale lorsque vous avez besoin de faire des changements à plusieurs documents à la fois. Voici un exemple :

db.books.updateMany(
{ year: { $lt: 1900 } },
{ $set: { category: "Classique" }, $inc: { specialEditionPrice: 5 } }
)

Cette opération trouve tous les livres publiés avant 1900, les catégorise comme "Classique", et augmente leur prix d'édition spéciale de 5. C'est comme passer par toute votre bibliothèque et mettre à jour tous les vieux livres d'un coup !

Maintenant, récapitulons toutes ces méthodes dans un tableau pratique :

Méthode Description Cas d'utilisation
update() Met à jour un document ou plusieurs documents Mise à jour générale
save() Insère un nouveau document ou met à jour un document existant Lorsque vous ne savez pas si le document existe
findOneAndUpdate() Trouve un document, le met à jour, et retourne soit le document original, soit le document mis à jour Lorsque vous avez besoin de connaître l'état du document avant ou après la mise à jour
updateOne() Met à jour un seul document Lorsque vous êtes sûr de vouloir mettre à jour uniquement un document
updateMany() Met à jour plusieurs documents Lorsque vous avez besoin de faire des changements à plusieurs documents à la fois

Souvenez-vous, jeunes padawans, mettre à jour des documents dans MongoDB est comme s'occuper d'un jardin. Vous devez être prudent et précis, mais avec ces outils à votre disposition, vous pouvez modeler vos données magnifiquement.

Alors, allez-y et mettez à jour vos documents avec confiance. Que vos requêtes soient précises et que vos mises à jour soient rapides !

Credits: Image by storyset