Définition
MongoDB est la base de données NoSQL orientee documents la plus populaire au monde. Elle stocke les données au format BSON (Binary JSON), offrant un schéma flexible qui s'adapte naturellement aux structures de données des applications modernes.
Créée en 2007 par 10gen (devenu MongoDB Inc.), MongoDB est utilisée par des entreprises comme Uber, eBay, et Adobe.
Modèle de données
Les données sont organisées en collections (equivalent des tables SQL) contenant des documents (equivalent des lignes) :
// Collection "users"
{
"_id": ObjectId("507f1f77bcf86cd799439011"),
"nom": "Alice Dupont",
"email": "alice@exemple.com",
"adresse": {
"ville": "Paris",
"cp": "75001"
},
"commandes": [
{ "produit": "Laptop", "prix": 999, "date": "2026-01-15" },
{ "produit": "Souris", "prix": 29, "date": "2026-03-22" }
]
}
Avantage : les données liées (adresse, commandes) sont embarquees dans le même document. Pas besoin de jointures.
Requêtes essentielles
// Trouver
db.users.find({ "adresse.ville": "Paris" });
// Filtrer et projeter
db.users.find({ age: { $gte: 18 } }, { nom: 1, email: 1 });
// Aggregation pipeline
db.commandes.aggregate([
{ $match: { date: { $gte: "2026-01-01" } } },
{ $group: { _id: "$produit", total: { $sum: "$prix" } } },
{ $sort: { total: -1 } }
]);
Embedding vs Referencing
Embedding (données imbriquées)
// Commandes embarquees dans l'utilisateur
{ "nom": "Alice", "commandes": [{ "produit": "Laptop" }] }
Quand : relation 1-to-few, données toujours lues ensemble
Referencing (relations par ID)
// Commande avec reference a l'utilisateur
{ "userId": ObjectId("507f..."), "produit": "Laptop" }
Quand : relation 1-to-many, données mises à jour indépendamment
MongoDB Atlas
MongoDB Atlas est le service cloud manage (DBaaS) de MongoDB :
- Free tier : 512 Mo, suffisant pour les prototypes
- Clusters dédiés à partir de ~57$/mois
- Atlas Search : full-text search integre
- Atlas Charts : visualisation de données
- Multi-cloud (AWS, GCP, Azure)
MongoDB vs PostgreSQL
| MongoDB | PostgreSQL | |
|---|---|---|
| Modèle | Document (BSON) | Relationnel + JSONB |
| Schéma | Flexible | Strict (migrations) |
| Jointures | $lookup (lent) | JOIN natif (rapide) |
| Transactions | Multi-document (depuis 4.0) | ACID complet |
| Full-text search | Atlas Search | tsvector natif |
| Cas idéal | Schéma evolutif, prototypage | Relations complexes, transactions |