Definition
MongoDB est la base de donnees NoSQL orientee documents la plus populaire au monde. Elle stocke les donnees au format BSON (Binary JSON), offrant un schema flexible qui s'adapte naturellement aux structures de donnees des applications modernes.
Creee en 2007 par 10gen (devenu MongoDB Inc.), MongoDB est utilisee par des entreprises comme Uber, eBay, et Adobe.
Modele de donnees
Les donnees sont organisees 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 donnees liees (adresse, commandes) sont embarquees dans le meme document. Pas besoin de jointures.
Requetes 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 (donnees imbriquees)
// Commandes embarquees dans l'utilisateur
{ "nom": "Alice", "commandes": [{ "produit": "Laptop" }] }
Quand : relation 1-to-few, donnees toujours lues ensemble
Referencing (relations par ID)
// Commande avec reference a l'utilisateur
{ "userId": ObjectId("507f..."), "produit": "Laptop" }
Quand : relation 1-to-many, donnees mises a jour independamment
MongoDB Atlas
MongoDB Atlas est le service cloud manage (DBaaS) de MongoDB :
- Free tier : 512 Mo, suffisant pour les prototypes
- Clusters dedies a partir de ~57$/mois
- Atlas Search : full-text search integre
- Atlas Charts : visualisation de donnees
- Multi-cloud (AWS, GCP, Azure)
MongoDB vs PostgreSQL
| MongoDB | PostgreSQL | |
|---|---|---|
| Modele | Document (BSON) | Relationnel + JSONB |
| Schema | 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 ideal | Schema evolutif, prototypage | Relations complexes, transactions |