MongoDB est une base de données NoSQL orientée documents qui stocke les données au format JSON (BSON) dans des collections flexibles.
🤔 Pourquoi MongoDB ?
MongoDB c’est pour quoi :
- 📄 Données JSON - Stocker direct du JSON comme en JavaScript
- 🚀 Développement rapide - Pas besoin de créer des tables à l’avance
- 🔄 Structure flexible - Les données peuvent changer de forme
- ⚡ Simple - Plus proche de la programmation
À utiliser pour :
- API REST (données JSON)
- Applications mobiles
- Stocker des logs, des événements
- Prototypes rapides
- Quand les données ne rentrent pas dans un tableau Excel
🚀 Installation
| 📌 Système | 🧠 Commande |
|---|---|
| 🐧 Ubuntu/Debian | sudo apt install mongodb-server mongodb-clients |
| 🎩 CentOS/RHEL | sudo yum install mongodb-org |
| 🍎 macOS (Homebrew) | brew install mongodb-community |
| 🐳 Docker | docker run -d mongo:7 |
| 🏢 Version officielle | mongodb.com/try/download |
⚙️ Configuration de base
| 📌 Action | 🧠 Commande |
|---|---|
| ▶️ Démarrer MongoDB | sudo systemctl start mongod |
| 🔄 Activer au démarrage | sudo systemctl enable mongod |
| 🔗 Se connecter | mongosh (ou mongo) |
| 📋 Voir les bases | show dbs |
| 🔗 Utiliser une base | use monapp |
| 🚪 Quitter mongosh | quit() (ou Ctrl+C) |
🗄️ Gestion des bases de données
| 📌 Action | 🧠 Commande |
|---|---|
| 📋 Lister les bases | show dbs |
| 🆕 Créer/utiliser une base | use monapp |
| 📊 Base courante | db.getName() |
| 🗑️ Supprimer la base courante | db.dropDatabase() |
| 📊 Statistiques de la base | db.stats() |
| 💾 Taille de la base | db.stats().dataSize |
📋 Gestion des collections
| 📌 Action | 🧠 Commande |
|---|---|
| 📋 Lister les collections | show collections |
| 🆕 Créer une collection | db.createCollection("users") |
| 🗑️ Supprimer une collection | db.users.drop() |
| 📊 Statistiques collection | db.users.stats() |
| 📖 Compter les documents | db.users.countDocuments() |
| 🔍 Premier document | db.users.findOne() |
👥 Gestion des utilisateurs
| 📌 Action | 🧠 Commande |
|---|---|
| 👤 Créer un admin | db.createUser({user:"admin", pwd:"motdepasse", roles:["root"]}) |
| 👤 Créer utilisateur lecture | db.createUser({user:"lecteur", pwd:"mdp", roles:["read"]}) |
| 👤 Créer utilisateur écriture | db.createUser({user:"editeur", pwd:"mdp", roles:["readWrite"]}) |
| 📋 Lister les utilisateurs | db.getUsers() |
| 🗑️ Supprimer un utilisateur | db.dropUser("lecteur") |
| 🔐 Activer l’authentification | Éditer /etc/mongod.conf: security.authorization: enabled |
💾 Sauvegarde et restauration
| 📌 Action | 🧠 Commande |
|---|---|
| 💾 Sauvegarder une base | mongodump --db monapp --out ./backup/ |
| 💾 Sauvegarder tout | mongodump --out ./backup/ |
| 📥 Restaurer une base | mongorestore --db monapp ./backup/monapp/ |
| 📥 Restaurer tout | mongorestore ./backup/ |
| 🗜️ Export JSON | mongoexport --db monapp --collection users --out users.json |
| 📦 Import JSON | mongoimport --db monapp --collection users --file users.json |
🔍 Monitoring et debug
| 📌 Action | 🧠 Commande |
|---|---|
| 📊 Statut du serveur | db.serverStatus() |
| 🔗 Connexions actives | db.serverStatus().connections |
| 🐌 Profiler (requêtes lentes) | db.setProfilingLevel(2) |
| 📈 Voir profil | db.system.profile.find() |
| 💾 Utilisation mémoire | db.serverStatus().mem |
| 🔧 Opérations en cours | db.currentOp() |