0% ont trouvé ce document utile (0 vote)
1 vues5 pages

BigData_NoSQL - TP9

Ce TP sur MongoDB permet d'explorer la gestion de dossiers patients dans un cabinet médical en utilisant un dataset JSON. Les étudiants apprendront à réaliser des opérations CRUD, à interroger des documents complexes et à manipuler des tableaux et des sous-documents. Le TP inclut des exercices pratiques sur l'importation de données, la création de requêtes et la mise à jour de documents dans une base de données contenant des collections de patients, médecins et médicaments.

Transféré par

Ouafaa Lakrakar
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
1 vues5 pages

BigData_NoSQL - TP9

Ce TP sur MongoDB permet d'explorer la gestion de dossiers patients dans un cabinet médical en utilisant un dataset JSON. Les étudiants apprendront à réaliser des opérations CRUD, à interroger des documents complexes et à manipuler des tableaux et des sous-documents. Le TP inclut des exercices pratiques sur l'importation de données, la création de requêtes et la mise à jour de documents dans une base de données contenant des collections de patients, médecins et médicaments.

Transféré par

Ouafaa Lakrakar
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Faculté Polydisciplinaire - Safi Filières : IIA & SD / Semestre : 6

Module : Big Data et NoSQL


TP9 : Le NoSQL avec MongoDB — CRUD et requêtes sur
documents

Partie 1. Présentation et contexte


Ce TP vous propose d'explorer MongoDB à travers un système de gestion de dossiers patients
dans un cabinet médical. Vous y manipulerez des documents complexes contenant des sous-
documents, des tableaux imbriqués, et des références entre collections. À la fin de ce TP, vous
serez capable de :
• Importer un dataset JSON dans MongoDB.
• Réaliser les principales opérations CRUD : insertion, lecture, modification et suppression.
• Construire des requêtes avec des opérateurs de comparaison et des opérateurs logiques.
• Interroger des documents imbriqués et des tableaux.
• Mettre à jour des champs imbriqués et manipuler des tableaux.

Le dataset : hopital
La base de données hopital contient trois collections :
• patients (50 documents) — dossiers patients avec consultations imbriquées
• medecins (25 documents) — praticiens avec leurs spécialités
• medicaments (28 documents) — pharmacopée avec effets et classes thérapeutiques

1/5
Faculté Polydisciplinaire - Safi Filières : IIA & SD / Semestre : 6

Structure d'un document patient


Voici la structure simplifiée d'un document de la collection patients :

{
"_id": "PAT001",
"nom": "El Amrani",
"prenom": "Fatima",
"sexe": "F",
"age": 67,
"groupe_sanguin": "O+",
"adresse": { "ville": "Safi", "region": "...", "code_postal": "46000" },
"email": "[Link]@[Link]", // optionnel
"profession": "Enseignante", // optionnel
"mutuelle": "CNOPS", // optionnel
"allergies": ["pénicilline", "pollen"], // optionnel
"maladies_chroniques": [...], // optionnel
"vaccinations": [...], // optionnel
"consultations": [
{
"date": ISODate("2024-01-15"),
"medecin_id": "MED010",
"motif": "douleurs lombaires",
"diagnostic": "lombalgie aiguë",
"tension": { "systolique": 130, "diastolique": 85 },
"prescriptions": [
{ "medicament_id": "MDC002", "medicament_nom": "Ibuprofène 400mg",
"posologie": "3x/jour", "duree_jours": 7 }
]
}
]
}

NOTE :Tous les champs marqués "optionnel" ne sont pas présents dans tous les patients : c'est
la flexibilité du schéma MongoDB.

2/5
Faculté Polydisciplinaire - Safi Filières : IIA & SD / Semestre : 6

Partie 2. Mise en place


2.1 — Import du dataset
Téléchargez les trois fichiers JSON depuis Classroom: [Link], [Link],
[Link].
Avant d’importer les données, assurez-vous que le serveur MongoDB est bien démarré.
Dans un premier terminal, lancez le serveur MongoDB avec la commande suivante :

mongod

Remarque : cette commande doit être exécutée dans le terminal, et non dans mongosh.
Ensuite, dans un deuxième terminal, placez-vous dans le dossier contenant les fichiers JSON,
puis importez les données avec les commandes suivantes :

mongoimport --db hopital --collection patients --file [Link]


mongoimport --db hopital --collection medecins --file [Link]
mongoimport --db hopital --collection medicaments --file [Link]

2.2 — Premières vérifications


Connectez-vous à mongosh et exécutez les commandes pour répondre aux questions.
Q1. Affichez la liste des bases de données. La base hopital y figure-t-elle ?
Q2. Sélectionnez la base hopital et listez les collections qu'elle contient.
Q3. Combien de documents contient chacune des trois collections ?
Q4. Affichez un document complet de chaque collection (avec findOne()). Notez les
principales différences de structure.
Q5. Comparez les champs présents dans deux patients différents. Tous les patients ont-ils
exactement les mêmes champs ? Justifiez.

Partie 3. Requêtes
3.1 — Création (Create)
Q6. Insérez un nouveau patient avec les champs suivants :
• _id = "PAT999",
• nom = "Tazi",
• prenom = "Khalid",
• sexe = "M",
• age = 35,
• ville = "Safi" (dans [Link]),
• aucune consultation.

3/5
Faculté Polydisciplinaire - Safi Filières : IIA & SD / Semestre : 6

Q7. Insérez en une seule commande deux nouveaux médicaments :


• MDC999 — Doliprane 500mg, classe Antalgique, forme comprimé, prix 25.50
• MDC998 — Spasfon, classe Antispasmodique, forme comprimé, prix 35.00

3.2 — Lecture (Read)


Q8. Affichez tous les patients de sexe féminin.
Q9. Affichez tous les patients dont l'âge est strictement supérieur à 60 ans.
Q10. Affichez tous les patients ayant le groupe sanguin O+ ET résidant à Casablanca.

3.3 — Mise à jour (Update)


Q11. Modifiez l'email du patient PAT001 pour le mettre à jour vers
"[Link]@[Link]".

Q12. Pour tous les patients résidant à Casablanca, ajoutez un nouveau champ secteur =
"urbain".
Q13. Incrémentez l’âge du patient PAT002 de 1.
Q14. Supprimez le champ profession du patient PAT001.

3.4 — Suppression (Delete)


Q15. Supprimez le patient de test créé en Q6 (PAT999).
Q16. Supprimez les deux médicaments fictifs ajoutés en Q7 (MDC999 et MDC998).

NOTE Vérifiez systématiquement le résultat de vos commandes Update et Delete via les
champs matchedCount, modifiedCount, deletedCount retournés par MongoDB.

3.5 — Opérateurs de comparaison et logiques


Q17. Affichez les patients dont l'âge est compris entre 30 et 50 ans (inclus).
Q18. Affichez les patients dont la mutuelle est CNSS ou CNOPS (utilisez $in).
Q19. Affichez les médecins de spécialité Cardiologue ou Endocrinologue, dont le tarif de
consultation est inférieur ou égal à 400 MAD.
Q20. Affichez les patients qui n'ont pas de mutuelle (champ absent).

3.6 — Projection et tri


Q21. Affichez uniquement le nom, prénom et la ville des patients de Marrakech. Excluez
le _id.
Q22. Affichez les 5 médecins les plus expérimentés (champ experience_annees
décroissant).
Q23. Affichez les médicaments triés par classe thérapeutique (ordre alphabétique), puis par
prix croissant à l'intérieur d'une classe.

4/5
Faculté Polydisciplinaire - Safi Filières : IIA & SD / Semestre : 6

3.7 — Documents imbriqués


Q24. Affichez tous les patients résidant dans la région "Marrakech-Safi".
Q25. Affichez les patients dont au moins une consultation a pour diagnostic "gastrite".
Q26. Affichez les patients dont au moins une consultation a une tension systolique
supérieure à 150.

3.8 — Tableaux
Q27. Affichez les patients allergiques à la pénicilline.
Q28. Affichez les patients allergiques à la fois aux arachides et au pollen.
Q29. Affichez les patients ayant exactement 3 allergies.
Q30. Trouvez les patients ayant une consultation à la fois courte (duree_minutes < 20)
ET avec le diagnostic "gastrite".

3.9 — Expressions régulières


Q31. Affichez les patients dont le nom commence par "El".
Q32. Affichez les patients dont l'email se termine par "@[Link]".
Q33. Affichez les médicaments dont le nom contient "mg" (insensible à la casse).

3.10 — Mise à jour des documents imbriqués


Q34. Ajoutez une nouvelle consultation au patient PAT001 (utilisez $push) avec :
• date : 2024-12-01
• medecin_id : MED001
• motif : "contrôle annuel"
• diagnostic : "bon état général"
• duree_minutes : 30
Q35. Retirez l'allergie "pollen" du patient PAT002 (utilisez $pull).
Q36. Modifiez le code postal de l'adresse du patient PAT001 pour le mettre à "46100".

5/5

Vous aimerez peut-être aussi