## 聚合查询
```
// 语法
db.集合名.aggregate([
{管道: {表达式}}
])
//示例
db.user.aggregate([
{
$group: {
_id: '$sex', // null 表示不分组
sum: {$sum: '$age'} // 1表示统计数量count
}
},
{
$sort: {sum: -1} // 按求和降序
}
])
```
<br>
## 常用管道
* $group 将集合中的文档分组,用于统计结果
* $match 过滤数据,只输出符合条件的文档
* $sort 聚合后进一步排序
* $skip 聚合后进一步跳过文档数
* $limit 聚合后进一步限制条数
* $project 增加、删除、重命名字段、筛选指定字段
* $lookup 引用其他集合的数据
```
// $lookup语法
db.order.aggregate([
{
$lookup: {
from: 'order_item', // 关联的表名
localFieId: 'order_id', // 关联的字段(主表)
foreignFieId: 'order_id', // 关联的字段(关联表)
as: 'items' // 关联后数据放到这个字段
}
}
])
```
<br>
## 常用表达式
* $sum 求和 $sum:1同count表示统计
* $avg 求平均
* $min 最小值
* $max 最大值