Module 1 : Introduction à MongoDB
Qu'est-ce que MongoDB ?
MongoDB est une base de données NoSQL orientée documents :
+----------------------------------------------------------+
| MongoDB |
+----------------------------------------------------------+
| |
| Type : Base NoSQL orientée documents |
| Format : BSON (Binary JSON) |
| Schema : Flexible (schema-less) |
| Scalabilite : Horizontale (sharding) |
| |
| Hierarchie: |
| Database > Collection > Document |
| |
+----------------------------------------------------------+
SQL vs MongoDB
| SQL | MongoDB |
|---|---|
| Database | Database |
| Table | Collection |
| Row | Document |
| Column | Field |
| Primary Key | _id |
| JOIN | $lookup / Embedding |
Structure d'un document
// Document MongoDB (format BSON/JSON)
{
"_id": ObjectId("507f1f77bcf86cd799439011"),
"nom": "Dupont",
"prenom": "Jean",
"email": "jean.dupont@example.com",
"age": 35,
"actif": true,
"dateCreation": ISODate("2024-01-15T10:30:00Z"),
"adresse": {
"rue": "123 Rue de la Paix",
"ville": "Paris",
"codePostal": "75001"
},
"competences": ["Python", "MongoDB", "Azure"],
"scores": [
{ "matiere": "math", "note": 85 },
{ "matiere": "info", "note": 92 }
]
}
Types de données BSON
Types principaux :
String- Chaines de caractères UTF-8Number- Int32, Int64, Double, Decimal128Boolean- true / falseDate- ISODateObjectId- Identifiant unique 12 bytesArray- Listes de valeursObject- Documents imbriquésNull- Valeur nulleBinary- Données binaires
ObjectId
// Structure d'un ObjectId (12 bytes)
ObjectId("507f1f77bcf86cd799439011")
|______||____||__||______|
| | | |
| | | +-- Compteur (3 bytes)
| | +-------- Process ID (2 bytes)
| +------------- Machine ID (3 bytes - deprecated)
+-------------------- Timestamp (4 bytes)
// Extraire le timestamp
ObjectId("507f1f77bcf86cd799439011").getTimestamp()
// -> ISODate("2012-10-17T20:46:22Z")
MongoDB Shell (mongosh)
# Connexion à MongoDB
mongosh "mongodb://localhost:27017"
mongosh "mongodb+srv://cluster.mongodb.net/mydb"
# Commandes de base
show dbs # Lister les bases
use folab # Sélectionner/créer une base
show collections # Lister les collections
db.stats() # Stats de la base
# Créer une collection
db.createCollection("users")
# Insérer un document
db.users.insertOne({
nom: "Martin",
email: "martin@test.com"
})
# Lire tous les documents
db.users.find()
# Compter les documents
db.users.countDocuments()
MongoDB Atlas (Cloud)
MongoDB Atlas est le service cloud managé de MongoDB :
- Clusters hébergés (AWS, Azure, GCP)
- Tier gratuit disponible (M0)
- Backups automatiques
- Scaling automatique
- Interface web pour administration
# Connection string Atlas
mongodb+srv://<user>:<password>@cluster0.xxxxx.mongodb.net/<database>
# Exemple avec Python
from pymongo import MongoClient
client = MongoClient("mongodb+srv://user:pass@cluster0.xxx.mongodb.net/")
db = client["folab"]
collection = db["users"]
# Inserer
result = collection.insert_one({"nom": "Test", "age": 30})
print(f"Inserted ID: {result.inserted_id}")
# Lire
for doc in collection.find():
print(doc)
Drivers MongoDB
# Python (PyMongo)
pip install pymongo
# Node.js
npm install mongodb
# Java
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongodb-driver-sync</artifactId>
<version>4.11.0</version>
</dependency>
# .NET
dotnet add package MongoDB.Driver
Cas d'usage MongoDB
MongoDB est idéal pour :
- Applications avec schéma évolutif
- Données semi-structurées (JSON, logs)
- Catalogues produits (e-commerce)
- Gestion de contenu (CMS)
- IoT et données temps réel
- Applications mobiles
MongoDB n'est PAS idéal pour :
- Transactions complexes multi-documents
- Relations fortement liées (mieux avec SQL)
- Reporting analytique lourd