AzDev

MongoDB CRUD - Exercices Progressifs

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.

Publié le
MongoDB CRUD - Exercices Progressifs

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 :

  1. Vérifie si le produit "TAJ-004" a assez de stock (au moins 2 unités)
  2. Si oui, décrémente le stock de 2
  3. 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 :

  1. Endpoints CRUD pour chaque collection
  2. Validation des données
  3. Gestion des stocks en temps réel
  4. Système de recommandation
  5. Dashboard analytique
  6. Gestion des alertes

💡 Conseils pour progresser

  1. Pratiquez régulièrement : Refaites les exercices
  2. Créez vos propres cas : Inventez de nouveaux scénarios business
  3. Optimisez : Cherchez toujours la requête la plus efficace
  4. Documentez : Commentez votre code pour expliquer la logique
  5. Collaborez : Partagez vos solutions avec d'autres étudiants

Bonne chance dans votre apprentissage de MongoDB ! 🚀