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

Agrégation MongoDB : Opérateurs et Exemples

Transféré par

bechir.dammak
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 ODT, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
60 vues5 pages

Agrégation MongoDB : Opérateurs et Exemples

Transféré par

bechir.dammak
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 ODT, PDF, TXT ou lisez en ligne sur Scribd

TP 2 : Agrégation avec MongoDB

Objectifs

Après avoir terminé ce TP, vous serez capable de :

• Décrire des opérateurs d'agrégation simples qui traitent et calculent des données telles que $sort,
$limit, $group, $sum, $min, $max et $avg

• Combinez des opérateurs pour créer des pipelines d'agrégation multi-étapes

Exercice 1 - Préparation de l'environnement

1. Chargez les données d'exemple dans la base de données de ‘training’

use training

[Link]({"name":"Ramesh","subject":"maths","marks":87})

[Link]({"name":"Ramesh","subject":"english","marks":59})

[Link]({"name":"Ramesh","subject":"science","marks":77})

[Link]({"name":"Rav","subject":"maths","marks":62})

[Link]({"name":"Rav","subject":"english","marks":83})

[Link]({"name":"Rav","subject":"science","marks":71})

[Link]({"name":"Alison","subject":"maths","marks":84})

[Link]({"name":"Alison","subject":"english","marks":82})

[Link]({"name":"Alison","subject":"science","marks":86})

[Link]({"name":"Steve","subject":"maths","marks":81})

[Link]({"name":"Steve","subject":"english","marks":89})

[Link]({"name":"Steve","subject":"science","marks":77})

[Link]({"name":"Jan","subject":"english","marks":0,"reason":"absent"})

Exercice 2 - Limiter les lignes dans la sortie

En utilisant l'opérateur $limit, nous pouvons limiter le nombre de documents imprimés dans la
sortie.

Cette commande imprimera uniquement 2 documents de la collection marks.

use training

[Link]([{"$limit":2}])
Exercice 3 - Tri basé sur une colonne

Nous pouvons utiliser l'opérateur $sort pour trier la sortie. Cette commande trie les documents en
fonction du champ marks par ordre croissant.

[Link]([{"$sort":{"marks":1}}])

Cette commande trie les documents en fonction du champ marks par ordre décroissant.

[Link]([{"$sort":{"marks":-1}}])

Exercice 4 - Trier et limiter

L'agrégation implique généralement l'utilisation de plus d'un opérateur. Un pipeline consiste en un


ou plusieurs opérateurs déclarés à l'intérieur d'un tableau.

Les opérateurs sont séparés par des virgules. MongoDB exécute le premier opérateur dans le
pipeline et envoie sa sortie à l'opérateur suivant. Créons un pipeline à deux étages qui répond à la
question "Quels sont les 2 meilleurs résultats ?".

[Link]([

{"$sort":{"marks":-1}},

{"$limit":2}

])

Exercice 5 - Regroupement par

L'opérateur $group by, avec des opérateurs comme $sum, $avg, $min, $max, nous permet
d'effectuer des opérations de regroupement.

Ce pipeline d'agrégation imprime la moyenne des notes pour toutes les matières.

[Link]([

"$group":{

"_id":"$subject",

"average":{"$avg":"$marks"}

])

La requête ci-dessus est équivalente à la requête SQL suivante.


SELECT subject, average(marks)

FROM marks

GROUP BY subject

Exercice 6 - Mettre tous ensemble

Maintenant, mettons ensemble tous les opérateurs que nous avons appris pour répondre à la
question.

"Qui sont les 2 meilleurs étudiants en fonction de la moyenne des notes ?" Cela implique :

 trouver la moyenne des notes par étudiant.


 trier la sortie en fonction des notes moyennes par ordre décroissant.
 limiter la sortie à deux documents.

[Link]([

"$group":{

"_id":"$name",

"average":{"$avg":"$marks"}

},

"$sort":{"average":-1}

},

"$limit":2

])
Exercices pratiques

1. Trouver le total des notes pour chaque étudiant dans toutes les matières. Sur le client mongo,
exécutez les commandes suivantes.

[Link]([

"$group":{"_id":"$name","total":{"$sum":"$marks"}}

])

2. Trouver les notes maximales obtenues dans chaque matière. Sur le client mongo, exécutez les
commandes suivantes.

[Link]([

"$group":{"_id":"$subject","max_marks":{"$max":"$marks"}}

])

3. Trouver les notes minimales obtenues par chaque étudiant. Sur le client mongo, exécutez les
commandes suivantes.

[Link]([

"$group":{"_id":"$name","min_marks":{"$min":"$marks"}}

])

4. Trouver les deux meilleures matières en fonction des notes moyennes. Sur le client mongo,
exécutez les commandes suivantes.

[Link]([

"$group":{

"_id":"$subject",

"average":{"$avg":"$marks"}
}

},

"$sort":{"average":-1}

},

"$limit":2

])

Vous aimerez peut-être aussi