Module 1Exploiter les fonctionnalités des bases de données NoSQL MongoDB
Chapitre 7 sur 7
Examen blanc et fiche mémo
Un examen blanc corrigé sur 40 points et la fiche mémo des commandes MongoDB et PyMongo.
- ≈ 90 min
- 2 leçons
- 3 exercices
- TP
Module 1Exploiter les fonctionnalités des bases de données NoSQL MongoDB
Chapitre 7 sur 7
Un examen blanc corrigé sur 40 points et la fiche mémo des commandes MongoDB et PyMongo.
Objectifs
Avec ce chapitre, tu sauras…
Leçon 1
Durée conseillée : 2 heures. Le sujet porte sur la base bibliotheque d'une médiathèque. Fais-le sans regarder le cours, puis corrige-toi.
Tableau: Barème
| Partie | Points |
|---|---|
| A · Questions de cours | 8 |
| B · Créer les données | 8 |
| C · Requêtes | 14 |
| D · Mises à jour, Python et sécurité | 10 |
| Total | 40 |
Leçon 2
| Besoin | Commande |
|---|---|
| lister les bases / collections | show dbs · show collections |
| créer ou ouvrir une base | use maBase |
| supprimer une collection / la base | db.col.drop() · db.dropDatabase() |
| insérer | db.col.insertOne({…}) · db.col.insertMany([{…}, {…}]) |
| lire | db.col.find(condition, projection) · db.col.findOne(…) |
| projection | { "nom": 1, "prenom": 1, "_id": 0 } |
| _id | titre | auteur (nom, pays) | annee | genre | prix | emprunts (lecteur, date) |
|---|---|---|---|---|---|---|
| 1 | L'Alchimiste |
{ "filiere.intitule": "…" } |
| modifier des champs | db.col.updateOne(cond, { $set: {…} }) · updateMany |
| autres opérateurs de mise à jour | $unset · $inc · $mul · $push |
| remplacer | db.col.replaceOne(cond, nouveauDocument) |
| supprimer | db.col.deleteOne(cond) · db.col.deleteMany(cond) |
| compter / valeurs distinctes | db.col.countDocuments(cond) · db.col.distinct("champ") |
| trier, sauter, limiter | .sort({ "champ": 1 }) (−1 = décroissant) · .skip(n) · .limit(n) |
| index | db.col.createIndex({ "champ": 1 }) · getIndexes() · dropIndex("champ_1") |
| Famille | Opérateurs |
|---|---|
| comparaison | $eq $ne $gt $gte $lt $lte |
| listes | $in $nin |
| logiques | $and $or $nor (tableau de conditions) |
| présence | $exists: true / false |
| Coelho, Brésil |
| 1988 |
| Roman |
| 70 |
| Amina 2026-10-02 ; Kamal 2026-10-20 |
| 2 | Le Petit Prince | Saint-Exupéry, France | 1943 | Conte | 45 | Sanaa 2026-10-05 |
| 3 | La Boîte à merveilles | Sefrioui, Maroc | 1954 | Roman | 35 | Amina 2026-09-15 ; Nidal 2026-10-01 ; Sanaa 2026-10-25 |
| 4 | Clean Code | Martin, USA | 2008 | Informatique | 320 | Kamal 2026-10-10 |
| 5 | Le Pain nu | Choukri, Maroc | 1980 | Roman |
Tableau: Le shell MongoDB (mongosh)
$push). (1,5 pt)bibliothecaire qui peut lire et écrire dans la base. (3 pts)use bibliotheque suivi de show dbs n'affiche-t-il pas la base ? (1 pt)Crée la base bibliotheque et la collection livres avec ces 5 documents (le champ emprunts est un tableau d'objets ; le dernier livre n'a ni prix ni emprunts) :
Tableau: Les opérateurs de requête
L'agrégation
db.col.aggregate([
{ $match: { condition } }, // filtrer (au début)
{ $group: { _id: "$champ", nb: { $sum: 1 }, // regrouper et calculer
total: { $sum: "$x" }, moy: { $avg: "$x" },
mini: { $min: "$x" }, maxi: { $max: "$x" } } },
{ $sort: { nb: -1 } } // trier
])PyMongo
from pymongo import MongoClient
client = MongoClient("mongodb://localhost:27017/")
db = client["Examples"]
for d in db.Stagiaires.find({"niveau": "2A"}, {"_id": 0}).sort("nom", -1):
print(d["prenom"])
db.Stagiaires.insert_one({...}); db.Stagiaires.insert_many([...])
db.Stagiaires.update_one(cond, {"$set": {...}}); db.Stagiaires.update_many(...)
db.Stagiaires.delete_one(cond); db.Stagiaires.delete_many(cond)
db.Stagiaires.count_documents(cond); db.Stagiaires.distinct("champ")
db.Stagiaires.create_index("nom"); db.Stagiaires.index_information(); db.Stagiaires.drop_index("nom_1")
db.Stagiaires.aggregate([{"$group": {"_id": "$niveau", "nb": {"$sum": 1}}}])Import, export, sauvegarde et utilisateurs
mongoexport -d base -c col -o fichier.json
mongoexport -d base -c col -f champ1,champ2 --type=csv -o fichier.csv
mongoimport -d base -c col --file fichier.json [--drop] [--jsonArray]
mongoimport -d base -c col --type csv --file fichier.csv --headerline
mongodump -d base -o dossier mongorestore -d base dossier/basedb.createUser({ user: "nom", pwd: "motdepasse", roles: [ { role: "readWrite", db: "base" } ] })
db.getUser("nom"); db.getUsers(); db.dropUser("nom"); db.auth("nom", "motdepasse")
db.grantRolesToUser("nom", ["read"]); db.revokeRolesFromUser("nom", ["read"])
// rôles : read, readWrite, dbAdmin, userAdmin, dbOwner
// mongod.cfg → security: authorization: enabledannee, prix et la date d'emprunt ? (2 pts)_id. (1 pt)find). (1 pt)