Agrégation à finalité unique
Introduction à l'agrégation à finalité unique
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" } } }])