Sommaire

Les opérateurs du pipeline d’agrégation

1. Évaluer une expression avec $cond

Cet opérateur agit comme le ferait un branchement conditionnel de type if dans n’importe quel langage de programmation : il évalue une expression booléenne puis effectue des actions si elle est vraie et si elle est fausse. Sa forme simplifiée est :

{ $cond: [ < expression >, < si vrai >, < si faux > ] }

Cette syntaxe condensée est bien connue des programmeurs C++, PHP ou encore Java sous le nom d’opérateur ternaire.

Reprenons la collection achats et supposons qu’un bon de réduction soit offert à tous les clients selon les conditions suivantes : toute personne ayant effectué au moins 300 euros d’achats aura un bon d’une valeur faciale de 10 euros et dans le cas contraire, cette valeur sera seulement de 5 euros. Voici le pipeline correspondant :

db.achats.aggregate([{ 
   $addFields: { 
       "total_achats": { $sum: "$achats" } 
   } 
}, 
{ 
   $project: { 
       "_id": 0, 
       "nom": 1, 
       "prenom": 1, 
       "bon_red": {$cond: [{$gte: ["$total_achats", 300]}, 10, 5]} 
   } 
} 
])

2. Parcourir et transformer les éléments d’un tableau ...