Ce chapitre présente le Pipeline d'Aggrégation MongoDB, principalement utilisé pour l'analyse statistique, similaire à l'instruction group by
en SQL. Dans le shell MongoDB, l'analyse statistique est réalisée grâce à la fonction db.collection.aggregate()
.
Concept
Le Pipeline d'Aggrégation est un concept abstrait qui traite les données comme de l'eau circulant dans un tuyau. Nous pouvons traiter les données en plusieurs étapes dans le pipeline. Après qu'une étape ait traité les données, les résultats sont transmis à l'étape suivante pour un traitement ultérieur.
Exemples d'application du pipeline d'aggrégation dans l'analyse statistique :
- Dans la première étape, un lot de données de documents est récupéré depuis la collection en fonction de certaines conditions.
- Dans la deuxième étape, les données de documents récupérées sont regroupées et agrégées.
- Dans la troisième étape, les données agrégées de la deuxième étape sont triées.
L'ensemble du processus ressemble à une opération de pipeline où les données entrent d'un bout du tuyau, subissent un traitement à travers plusieurs étapes, puis produisent un résultat final.
Opérateurs Supportés par le Pipeline MongoDB
Voici quelques opérateurs de pipeline couramment supportés par MongoDB :
Opérateur | Description |
---|---|
$match | La phase $match est utilisée pour filtrer les données de documents selon des conditions, similaire à la condition where en SQL. |
$group | La phase $group est utilisée pour regrouper et agréger les données de documents, similaire à la clause group by en SQL. |
$sort | Utilisé pour trier les données. |
Étapes pour Utiliser le Pipeline d'Aggrégation
Typiquement, trois étapes sont impliquées :
- Filtrer les données cibles à l'aide de $match.
- Regrouper et agréger les données à l'aide de $group.
- Trier les résultats à l'aide de $sort (optionnel).
Exemple :
db.orders.aggregate([
{ $match: { status: "A" } },
{ $group: { _id: "$cust_id", total: { $sum: "$amount" } } },
{ $sort: { total: -1 } }
])
SQL équivalent :
select sum(amount) as total from orders
where status="A"
group by cust_id
order by total desc
Remarque : Pour plus d'informations sur l'analyse statistique agrégée, veuillez vous référer aux chapitres ultérieurs.