🛢️Parcours Fioul GroupéMongoDB · Chapitre 03
Accueil › MongoDB › Chapitre 03
Chapitre 03 / 17

Les méthodes CRUD

CRUD = Create, Read, Update, Delete : les quatre opérations fondamentales sur les documents. C'est le cœur du travail quotidien avec MongoDB.

1 Create

Insérer des documents

insertOne() ajoute un document, insertMany() en ajoute plusieurs (dans un tableau). La collection est créée automatiquement si elle n'existe pas.

db.clients.insertOne({ nom: "Dupont", ville: "Limoges", points: 120 })

db.clients.insertMany([
  { nom: "Martin", ville: "Limoges", points: 80 },
  { nom: "Nguyen", ville: "Brive",   points: 200 }
])

Résultat

{ acknowledged: true, insertedId: ObjectId("652f...") }
2 Notion

Le champ _id

Chaque document possède un champ _id unique dans sa collection. Si on ne le fournit pas, MongoDB génère un ObjectId (identifiant de 12 octets contenant notamment un horodatage).

// _id automatique
db.clients.insertOne({ nom: "Petit" })
// _id imposé (doit être unique)
db.fournisseurs.insertOne({ _id: "total-energies", nom: "TotalEnergies" })
À retenir — on peut choisir son propre _id (une chaîne parlante, par exemple), à condition qu'il reste unique. Insérer deux fois le même _id lève une erreur de clé dupliquée.
3 Read

Lire des documents

find(filtre) renvoie tous les documents correspondants ; findOne(filtre) renvoie le premier. Sans filtre, find() renvoie tout.

db.clients.find()                          // tous
db.clients.find({ ville: "Limoges" })       // filtrés
db.clients.findOne({ nom: "Dupont" })        // un seul
Astuce — dans mongosh, ajoute .pretty() pour un affichage indenté. Le chapitre 4 approfondit les filtres (opérateurs), le chapitre 7 les projections (choix des champs).
4 Update

Mettre à jour

updateOne() modifie le premier document correspondant, updateMany() tous. On indique quoi modifier avec des opérateurs : $set (fixer une valeur), $inc (incrémenter), $unset (retirer un champ).

db.clients.updateOne(
  { nom: "Dupont" },
  { $set: { ville: "Tulle" } }
)

db.clients.updateMany(
  { ville: "Limoges" },
  { $inc: { points: 10 } }      // +10 points à tous
)

Résultat

{ acknowledged: true, matchedCount: 2, modifiedCount: 2 }

Option utile : upsert — créer le document s'il n'existe pas.

db.clients.updateOne(
  { nom: "Roux" },
  { $set: { ville: "Guéret" } },
  { upsert: true }        // crée le client s'il est absent
)
5 Delete

Supprimer

deleteOne() supprime le premier document correspondant, deleteMany() tous ceux qui correspondent.

db.clients.deleteOne({ nom: "Petit" })
db.clients.deleteMany({ ville: "Brive" })
Attention — deleteMany({}) (filtre vide) supprime tous les documents de la collection. Toujours vérifier son filtre avant d'exécuter.
6 Piège

update avec $set vs remplacement total

Erreur classique du débutant : oublier $set. Sans opérateur, le second argument remplace tout le document.

// ❌ REMPLACE tout : le client perd ville et points !
db.clients.updateOne({ nom: "Dupont" }, { points: 200 })

// ✅ Correct : ne change que le champ points
db.clients.updateOne({ nom: "Dupont" }, { $set: { points: 200 } })
🛢️ Sur le projet Fioul Groupé

Entraîne-toi sur la collection campagnes : insère une campagne pour Ladignac, lis-la, mets à jour son statut de "OUVERTE" à "CLOTUREE" avec $set, puis supprime une campagne de test. Tu retrouveras exactement ces opérations, plus tard, derrière les endpoints de l'API Spring (POST, GET, PUT, DELETE).

Ce qu'il faut retenir du chapitre
  • Create : insertOne / insertMany.
  • Read : find / findOne.
  • Update : updateOne / updateMany avec $set, $inc (et upsert).
  • Delete : deleteOne / deleteMany.
  • Toujours $set pour une modification partielle !
← Chapitre 02