Utilisation des opérateurs d’agrégation (match, group, project, sort, limit, unwind)
MongoDB fournit un ensemble d'opérateurs pour manipuler les documents à chaque étape du pipeline. Voici quelques opérateurs courants.
$match : Filtrage des documents
L'opérateur $match est utilisé pour filtrer les documents en fonction de critères donnés, similaire à une clause WHERE
dans SQL.
db.ventes.aggregate([
{ $match: { "produit": "Ordinateur", "quantité": { $gt: 10 } } }
])
Ici, nous récupérons les ventes où le produit est "Ordinateur" et où la quantité vendue est supérieure à 10.
$group : Regroupement et calculs agrégés
L'opérateur $group est utilisé pour regrouper les documents en fonction d'un champ spécifique et pour calculer des valeurs agrégées comme la somme, la moyenne, le minimum ou le maximum.
db.ventes.aggregate([
{ $group: { _id: "$produit", total_ventes: { $sum: "$montant" }, moyenne_ventes: { $avg: "$montant" } } }
])
Ce pipeline regroupe les ventes par produit, calcule la somme totale des montants pour chaque produit et la moyenne des montants.
$project : Transformation des documents
L'opérateur $project permet de spécifier quels champs doivent être inclus ou exclus dans la sortie, et de créer de nouveaux champs calculés.
db.clients.aggregate([
{ $project: { nom_complet: { $concat: ["$prenom", " ", "$nom"] }, age: 1, ville: 1, _id: 0 } }
])
Ici, on crée un nouveau champ nom_complet
en combinant les champs prenom
et nom
, tout en affichant uniquement les champs age
et ville
.
$sort : Tri des résultats
L'opérateur $sort est utilisé pour trier les résultats selon un ou plusieurs champs, de manière croissante ou décroissante.
db.ventes.aggregate([
{ $sort: { montant: -1 } }
])
Cela trie les ventes par montant, du plus élevé au plus bas.
$limit et $skip : Limitation et décalage des résultats
$limit : Limite le nombre de documents retournés par l'agrégation.
$skip : Ignore un nombre défini de documents avant de commencer à retourner les résultats.
db.ventes.aggregate([
{ $sort: { montant: -1 } },
{ $limit: 5 }
])
Cela retourne les 5 ventes les plus élevées.
$unwind : Décomposition des tableaux
L'opérateur $unwind permet de "décompresser" un tableau, créant un document distinct pour chaque élément du tableau. C'est utile pour travailler avec des documents qui contiennent des champs de type tableau.
db.clients.aggregate([
{ $unwind: "$hobbies" },
{ $group: { _id: "$hobbies", total_clients: { $sum: 1 } } }
])
Cela regroupe les clients en fonction de leurs hobbies et compte combien de clients partagent chaque hobby.
Last updated