Les agrégations dans MongoDB permettent de réaliser des opérations de traitement de données, telles que le filtrage, le regroupement, le tri et les transformations, directement sur les collections de documents.

Notions abordées

Pipeline d'agrégation

Le pipeline d'agrégation est une séquence d'étapes de traitement de données. Chaque étape prend des documents en entrée, les transforme et produit des résultats en sortie.

Exemple, voici une collection sales avec des documents :

db.sales.insertMany([
    { "item": "apple", "price": 1, "quantity": 10, "date": new Date("2023-01-01") },
    { "item": "banana", "price": 2, "quantity": 5, "date": new Date("2023-01-02") },
    { "item": "orange", "price": 1.5, "quantity": 8, "date": new Date("2023-01-03") },
    { "item": "apple", "price": 1, "quantity": 40, "date": new Date("2023-01-05") }
])

Voici une aggregation avec son pipeline :

db.sales.aggregate([
    { $match: { item: 'apple' } },
    { $group: { _id: '$item', totalSales: { $sum: { $multiply: ['$price', '$quantity'] } } } },
    { $sort: { totalSales: -1 } },
    { $project: { item: 1, totalSales: 1, _id: 0 } }
])

Opérateur $match

L'opérateur $match est utilisé pour filtrer les documents selon des critères spécifiques, similaire à l'opérateur find.

{ "$match": { "item": "apple" } }

Opérateur $group

L'opérateur $group regroupe les documents par une clé spécifiée et permet d'appliquer des opérations d'agrégation comme $sum, $avg, $max, et $min.

{
  "$group": {
    "_id": "$item",
    "totalSales": {
      "$sum": {
        "$multiply": ["$price", "$quantity"]
      }
    }
  }
}
  1. $group : Cet opérateur regroupe les documents par la valeur d'un champ spécifié. Ici, nous groupons par le champ item.
  2. totalSales : Ce champ est créé pour chaque groupe de documents.