# Mongo - Aggregation ## Lesson Objectives 1. Explain what aggregation is 1. Explain the Mongo Aggregation Pipeline 1. Explain some basic aggregation functions 1. Explain $out ## Explain what aggregation is ## Explain the Mongo Aggregation Pipeline 1. `db.collectionName.aggregate([, ]);` 1. http://docs.mongodb.org/manual/_images/aggregation-pipeline.png ## Explain some basic aggregation functions 1. `{ $match : { weight : { $lt : 600 } } }` 1. `{ $sort : { salary : -1 } }` 1. `{ $limit : 1 }` 1. `{ $skip : 1 }` 1. `{ $out : 'collectionName'}` 1. $group - `{ $group : { _id : '$gender' } }` - `{ $group : { _id : { 'weight' : '$weight', 'gender' : '$gender' } } } ] );` - `{ $group : { _id : '$gender', numOfEachGender : { $sum : 1 } } }` - `{ $group : { _id : '$gender', avgSalary : { $avg : '$salary' } } }` - `{ $group : { _id : '$weight', namesArray : { $addToSet : '$name' } } }` 1. `{ $unwind : '$loves' }` - `db.employees.aggregate([{$unwind : '$loves'}, {$group : { _id : '$loves', num : {$sum : 1}, names : {$addToSet : '$name'}}}])` 1. $project - `{ $project : { name : 1, _id : 0 } }` - `{ $project : { namezz :'$name' } }` - expressions - `{ $project : { awesomeName : { $concat : ['$name', ' is awesome', '!']}} }` - http://docs.mongodb.org/manual/meta/aggregation-quick-reference/#aggregation-expressions - `{ $project : { embedded_atrribute : '$embedded_object.foo' } }` - `{ $project : { embedded_object.attribute : 1 } }` - arrays?