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
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" })
_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.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
mongosh, ajoute .pretty() pour un affichage indenté. Le chapitre 4 approfondit les filtres (opérateurs), le chapitre 7 les projections (choix des champs).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
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
)
Supprimer
deleteOne() supprime le premier document correspondant, deleteMany() tous ceux qui correspondent.
db.clients.deleteOne({ nom: "Petit" })
db.clients.deleteMany({ ville: "Brive" })
deleteMany({}) (filtre vide) supprime tous les documents de la collection. Toujours vérifier son filtre avant d'exécuter.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 } })
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).
- Create :
insertOne/insertMany. - Read :
find/findOne. - Update :
updateOne/updateManyavec$set,$inc(etupsert). - Delete :
deleteOne/deleteMany. - Toujours
$setpour une modification partielle !