De aggregatieoperator in MongoDB is een krachtig hulpmiddel dat je kunt gebruiken om gegevens in jouw collecties te verwerken en te analyseren. Het combineert gegevens uit verschillende bronnen en maakt het mogelijk om ze in verschillende stadia te manipuleren, zodat je complexe queries kunt uitvoeren.
De algemene syntax voor een MongoDB-aggregatieziet er zoals volgt uit:
```
db.collection.aggregate([
{ stage1 },
{ stage2 },
…
])
```
Het `.aggregate()` commando gebruikt een array van verschillende aggregatiestages.
Binnen de aggregate-framework zijn er verschillende verschillende operators en stagegroepen die je kunt gebruiken, waaronder:
- `$match` : Filtert documenten die voldoen aan bepaalde voorwaarden.
- `$group` : Groepeert documenten op basis van bepaalde expressies.
- `$sum` : Telt het aantal gegeven waarden.
- `$avg` : Berekent de gemiddelde waarde van de gegeven waarden.
- `$min` / `$max` : Geeft het minimum- / maximumwaarde van de gegeven waarden terug.
- `$sort` : Sorteert documenten in een bepaalde volgorde.
- `$project` : Voegt, verwijdert of verandert de velden in documenten.
Hier is een voorbeeld van hoe je de aggregation framework van MongoDB kunt gebruiken:
```
db.sales.aggregate([
{ $match: { status: “A” } },
{ $group: { _id: “$cust_id”, total: { $sum: “$amount” } } }
])
```
Deze query doet twee dingen:
Eerst gebruikt het `$match` om alleen de documenten met status “A” te selecteren. Daarna gebruikt het `$group` om de geselecteerde documenten te groeperen op klant-ID (“$cust\_id”) en de totale “amount” per klant te bereken.
De documenten die uit een stadium komen, worden doorgestuurd naar het volgende stadium. In dit geval worden de documenten die worden gefilterd door `$match` doorgestuurd naar `$group`.