## 聚合查詢
```
// 語法
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 最大值