Aller au contenu

Agrégation à finalité unique#

Introduction à l'agrégation à finalité unique#

Utilisation des fonctions d'agrégation pour obtenir des informations à partir d'un ensemble de documents#

Utilisation des opérateurs de groupe pour regrouper et résumer des données#

Avantages: simplicité, rapidité pour des opérations simples#

Limites: moins flexible que les pipelines d'agrégation et Map-reduce#

Agrégation avec des opérateurs de groupe#

$group : regrouper des documents en fonction d'un ou plusieurs champs#

$sum : additionner les valeurs d'un champ spécifié#

    Exemple: { $sum: "$field" }

$avg : calculer la moyenne des valeurs d'un champ spécifié#

    Exemple: { $avg: "$field" }

$min : déterminer la valeur minimale d'un champ spécifié#

    Exemple: { $min: "$field" }

$max : déterminer la valeur maximale d'un champ spécifié#

    Exemple: { $max: "$field" }

$push : ajouter les valeurs d'un champ spécifié à un tableau#

    Exemple: { $push: "$field" }

$addToSet : ajouter les valeurs uniques d'un champ spécifié à un tableau#

    Exemple: { $addToSet: "$field" }

Agrégation conditionnelle#

$cond : appliquer une condition ternaire (si... alors... sinon...) sur les documents#

    Exemple: { $cond: { if: { $gte: ["$field", 0] }, then: "$field", else: "N/A" } }

$ifNull : remplacer les valeurs nulles ou inexistantes par une valeur par défaut#

    Exemple: { $ifNull: ["$field", "N/A"] }

Exemples d'agrégation à finalité unique#

Exemple 1: Calculer le montant total des ventes par catégorie#

    Commande: db.collection.aggregate([{ $group: { _id: "$category", totalSales: { $sum: "$sales" } } }])

Exemple 2: Obtenir la moyenne des notes par étudiant#

    Commande: db.collection.aggregate([{ $group: { _id: "$student", avgGrade: { $avg: "$grade" } } }])

Exemple 3: Trouver le prix minimum et maximum par produit#

    Commande: db.collection.aggregate([{ $group: { _id: "$product", minPrice: { $min: "$price" }, maxPrice: { $max: "$price" } } }])