MongoDB CRUD - Exercices Progressifs
📋 Introduction
Ce cahier contient 30 exercices progressifs répartis en 3 niveaux de difficulté pour maîtriser les opérations CRUD dans MongoDB. Chaque exercice est accompagné de sa correction détaillée.
Structure des exercices
- Niveau 1 : Débutant (10 exercices) - Opérations simples
- Niveau 2 : Intermédiaire (10 exercices) - Requêtes complexes
- Niveau 3 : Avancé (10 exercices) - Cas pratiques complets
Base de données utilisée
- Nom :
shop_maroc - Collections :
products,customers,orders
🟢 NIVEAU 1 : DÉBUTANT
Exercice 1.1 - Première insertion
Objectif : Insérer votre premier document
Énoncé : Ajoutez un nouveau produit dans la collection products :
- SKU : "LMP-001"
- Nom : "Lampe artisanale en cuivre"
- Catégorie : "Décoration"
- Prix : 450 MAD
- Stock : 20 unités à Marrakech
Exercice 1.2 - Recherche simple
Objectif : Effectuer une recherche basique
Énoncé : Trouvez tous les produits de la catégorie "Alimentation"
Exercice 1.3 - Recherche avec limite
Objectif : Limiter les résultats
Énoncé : Affichez les 3 premiers clients de la collection
Exercice 1.4 - Mise à jour simple
Objectif : Modifier un document
Énoncé : Augmentez le prix du produit avec SKU "THE-005" de 10 MAD
Exercice 1.5 - Suppression simple
Objectif : Supprimer un document
Énoncé : Supprimez le produit avec SKU "LMP-001" que vous avez créé
Exercice 1.6 - Recherche par ID
Objectif : Utiliser findOne
Énoncé : Trouvez le client avec customerId "CLT-10003"
Exercice 1.7 - Insertion multiple
Objectif : Insérer plusieurs documents
Énoncé : Ajoutez deux nouveaux clients :
- Samir Hakimi de Tanger
- Leila Mansouri d'Agadir
Exercice 1.8 - Comptage
Objectif : Compter les documents
Énoncé : Combien y a-t-il de produits dans la catégorie "Vêtements" ?
Exercice 1.9 - Mise à jour de champ imbriqué
Objectif : Modifier un sous-document
Énoncé : Changez la ville du client "CLT-10002" pour "Rabat"
Exercice 1.10 - Projection simple
Objectif : Sélectionner des champs spécifiques
Énoncé : Affichez uniquement le nom et le prix de tous les produits
🟡 NIVEAU 2 : INTERMÉDIAIRE
Exercice 2.1 - Requête avec opérateur de comparaison
Objectif : Utiliser les opérateurs de comparaison
Énoncé : Trouvez tous les produits dont le prix est compris entre 100 et 500 MAD
Exercice 2.2 - Requête OR
Objectif : Utiliser l'opérateur $or
Énoncé : Trouvez tous les clients de Casablanca OU Rabat
Exercice 2.3 - Mise à jour avec $push
Objectif : Ajouter un élément à un tableau
Énoncé : Ajoutez le tag "promotion" au produit "CAF-001"
Exercice 2.4 - Recherche dans les tableaux
Objectif : Requêtes sur les tableaux
Énoncé : Trouvez tous les produits qui ont le tag "luxe"
Exercice 2.5 - Tri et limite
Objectif : Ordonner et limiter les résultats
Énoncé : Affichez les 5 produits les plus chers
Exercice 2.6 - Mise à jour multiple
Objectif : updateMany
Énoncé : Ajoutez 50 points de fidélité à tous les clients de Fès
Exercice 2.7 - Requête complexe
Objectif : Combiner plusieurs critères
Énoncé : Trouvez tous les produits :
- En stock (quantity > 0)
- Prix < 1000 MAD
- Dans l'entrepôt de Casablanca
Exercice 2.8 - Suppression conditionnelle
Objectif : Supprimer avec critères
Énoncé : Supprimez tous les clients qui n'ont jamais fait d'achat (lastPurchase = null)
Exercice 2.9 - Mise à jour avec $pull
Objectif : Retirer un élément d'un tableau
Énoncé : Retirez le tag "promotion" de tous les produits qui l'ont
Exercice 2.10 - Recherche avec regex
Objectif : Utiliser les expressions régulières
Énoncé : Trouvez tous les produits dont le nom contient "Marocain" (insensible à la casse)
🔴 NIVEAU 3 : AVANCÉ
Exercice 3.1 - Gestion de stock complexe
Objectif : Transaction multi-documents
Énoncé : Créez une fonction qui :
- Vérifie si le produit "TAJ-004" a assez de stock (au moins 2 unités)
- Si oui, décrémente le stock de 2
- Crée une alerte si le stock passe en dessous de 5
Exercice 3.2 - Analyse des meilleures ventes
Objectif : Requête analytique complexe
Énoncé : Trouvez les 3 produits les plus présents dans les commandes, avec le nombre total d'unités vendues
Exercice 3.3 - Migration de données
Objectif : Transformer la structure des documents
Énoncé : Migrez tous les produits pour ajouter un champ "disponibility" basé sur le stock :
- "in_stock" si quantity > 10
- "low_stock" si quantity entre 1 et 10
- "out_of_stock" si quantity = 0
Exercice 3.4 - Système de recommandation
Objectif : Créer une logique de recommandation
Énoncé : Pour un client donné, trouvez 3 produits recommandés basés sur :
- Les catégories de ses achats précédents
- Exclusion des produits déjà achetés
- Produits avec rating > 4.5
Exercice 3.5 - Calcul de fidélité avancé
Objectif : Système de points complexe
Énoncé : Créez une fonction qui recalcule les points de fidélité d'un client selon :
- 1 point par 10 MAD dépensés
- Bonus 50 points si 3+ commandes
- Bonus 100 points si client depuis plus d'un an
- Double points sur la catégorie "Luxe"
Exercice 3.6 - Rapport de performance
Objectif : Analyse multi-critères
Énoncé : Créez un rapport qui affiche :
- Top 3 des villes par nombre de clients
- Catégorie de produits la plus rentable
- Taux de conversion (clients avec commandes / total clients)
Exercice 3.7 - Détection d'anomalies
Objectif : Identifier les incohérences
Énoncé : Créez une fonction qui détecte :
- Produits avec prix négatif ou zéro
- Commandes sans articles
- Clients avec email invalide
- Stock négatif
Exercice 3.8 - Synchronisation inventaire
Objectif : Mise à jour en masse complexe
Énoncé : Synchronisez l'inventaire avec un fichier externe contenant les nouvelles quantités. Si la différence est > 50%, créez une alerte.
Exercice 3.9 - Archivage des anciennes commandes
Objectif : Déplacer des données vers une collection d'archive
Énoncé : Archivez toutes les commandes de plus de 6 mois dans une collection orders_archive et supprimez-les de la collection principale.
Exercice 3.10 - Dashboard temps réel
Objectif : Créer un tableau de bord complet
Énoncé : Créez une fonction qui génère un dashboard avec :
- KPIs en temps réel (ventes du jour, stock critique, nouveaux clients)
- Top 5 produits du jour
- Alertes actives
- Prévisions de rupture de stock
📊 Récapitulatif des compétences
Après ces exercices, vous maîtrisez :
Niveau 1 ✅
- Opérations CRUD de base
- Requêtes simples
- Projections basiques
Niveau 2 ✅
- Opérateurs de comparaison et logiques
- Manipulation de tableaux
- Requêtes complexes
- Tri et pagination
Niveau 3 ✅
- Logique métier avancée
- Transactions multi-documents
- Analyse de données
- Maintenance et optimisation
- Création de rapports
🎯 Projet final suggéré
Créez une API REST complète pour gérer le shop_maroc avec :
- Endpoints CRUD pour chaque collection
- Validation des données
- Gestion des stocks en temps réel
- Système de recommandation
- Dashboard analytique
- Gestion des alertes
💡 Conseils pour progresser
- Pratiquez régulièrement : Refaites les exercices
- Créez vos propres cas : Inventez de nouveaux scénarios business
- Optimisez : Cherchez toujours la requête la plus efficace
- Documentez : Commentez votre code pour expliquer la logique
- Collaborez : Partagez vos solutions avec d'autres étudiants
Bonne chance dans votre apprentissage de MongoDB ! 🚀
