MongoDB est une base de données NoSQL orientée documents. Elle stocke les données sous forme de documents JSON/BSON flexibles, sans schéma fixe. Idéale pour les applications nécessitant scalabilité horizontale et flexibilité du modèle.
Conteneur de collections (equivalent a une BDD relationnelle)
Groupe de documents (equivalent a une table)
Enregistrement JSON/BSON (equivalent a une ligne)
Paire cle-valeur (equivalent a une colonne)
// Inserer un document
db.etudiants.insertOne({
nom: "Dupont",
prenom: "Jean",
age: 22,
cours: ["SGBD", "Java", "Web"]
})
// Inserer plusieurs documents
db.etudiants.insertMany([
{ nom: "Martin", prenom: "Claire", age: 21 },
{ nom: "Bernard", prenom: "Pierre", age: 23 }
])
// Tous les documents
db.etudiants.find()
// Avec filtre
db.etudiants.find({ age: { $gt: 21 } })
// Un seul document
db.etudiants.findOne({ nom: "Dupont" })
// Projection (selection de champs)
db.etudiants.find({}, { nom: 1, prenom: 1, _id: 0 })
// Modifier un document
db.etudiants.updateOne(
{ nom: "Dupont" },
{ $set: { age: 23 } }
)
// Modifier plusieurs documents
db.etudiants.updateMany(
{ age: { $lt: 22 } },
{ $inc: { age: 1 } }
)
// Supprimer un document
db.etudiants.deleteOne({ nom: "Martin" })
// Supprimer plusieurs documents
db.etudiants.deleteMany({ age: { $lt: 20 } })
| Operateur | Description | Exemple |
|---|---|---|
$eq | Egal a | { age: { $eq: 25 } } |
$ne | Different de | { status: { $ne: "inactif" } } |
$gt | Plus grand que | { age: { $gt: 18 } } |
$gte | Plus grand ou egal | { note: { $gte: 10 } } |
$lt | Plus petit que | { prix: { $lt: 100 } } |
$lte | Plus petit ou egal | { stock: { $lte: 5 } } |
$in | Dans une liste | { status: { $in: ["A", "B"] } } |
$nin | Pas dans une liste | { type: { $nin: ["X", "Y"] } } |
// AND implicite
db.col.find({ age: { $gt: 18 }, status: "actif" })
// AND explicite
db.col.find({ $and: [{ age: { $gt: 18 } }, { status: "actif" }] })
// OR
db.col.find({ $or: [{ age: { $lt: 18 } }, { status: "senior" }] })
// NOT
db.col.find({ age: { $not: { $gt: 25 } } })
db.ventes.aggregate([
// Etape 1: Filtrer
{ $match: { annee: 2025 } },
// Etape 2: Grouper
{ $group: {
_id: "$categorie",
total: { $sum: "$montant" },
moyenne: { $avg: "$montant" },
count: { $sum: 1 }
}},
// Etape 3: Trier
{ $sort: { total: -1 } },
// Etape 4: Limiter
{ $limit: 5 },
// Etape 5: Projeter
{ $project: {
categorie: "$_id",
total: 1,
_id: 0
}}
])
| Etape | Description |
|---|---|
$match | Filtre les documents |
$group | Groupe par champ |
$project | Selectionne/transforme les champs |
$sort | Trie les resultats |
$limit | Limite le nombre de resultats |
$skip | Saute N documents |
$unwind | Decompresse un tableau |
$lookup | Jointure avec autre collection |
| Fonction | Description |
|---|---|
$sum | Somme |
$avg | Moyenne |
$min | Valeur minimum |
$max | Valeur maximum |
$push | Ajoute a un tableau |
$first | Premiere valeur |
$last | Derniere valeur |
$match en début optimise les performances_id est ajouté automatiquement si non spécifié1 = inclure, 0 = exclureTestez vos connaissances sur MongoDB.
Q1. Quel opérateur signifie "plus grand que" ?
Q2. Quelle méthode insère plusieurs documents ?
Q3. Quelle étape filtre les documents dans un pipeline d'agrégation ?
Q4. Comment trier par ordre décroissant ?
Q5. Quel opérateur incrémente une valeur dans updateOne ?
Q6. Dans une projection, comment exclure le champ _id ?