是時(shí)候展現(xiàn)真正的實(shí)力了??
MongoDB中聚合(aggregate)的使用
MongoDB中聚合主要是用于處理數(shù)據(jù)的,包括統(tǒng)計(jì)平均值、求和等操作,并且返回計(jì)算后的數(shù)據(jù)結(jié)果。
MongoDB聚合中的方法可以通過(guò)aggregate()來(lái)實(shí)現(xiàn)。
db.COLLECTION_NAME.aggregate(AGGREGATE_OPERATION)
接下來(lái)先看下管道操作符和表達(dá)式操作符:
管道操作符
| 常用管道操作符 | 含義 |
|---|---|
| $group | 將collection中的document分組,可以用來(lái)統(tǒng)計(jì)結(jié)果 |
| $match | 過(guò)濾數(shù)據(jù),找到匹配結(jié)果的文檔 |
| $project | 投影,修改輸入文檔的結(jié)構(gòu)(例如重命名,增加、刪除字段等) |
| $sort | 將結(jié)果排序 |
| $limit | 限制輸出的結(jié)果個(gè)數(shù) |
| $skip | 跳過(guò)指定數(shù)量的結(jié)果 |
| $unwind | 將數(shù)組類型的字段進(jìn)行拆分 |
表達(dá)式操作符
| 常用表達(dá)式 | 含義 |
|---|---|
| $sum | 計(jì)算總和 |
| $avg | 平均值 |
| $min | 求最小值 |
| $max | 求最大值 |
| $push | 將結(jié)果中的值插入到數(shù)組中 |
| $first | 根據(jù)排序的結(jié)果獲取第一個(gè)文檔數(shù)據(jù) |
| $last | 根據(jù)排序的結(jié)果獲取最后一個(gè)數(shù)據(jù) |
操作方法
db.COLLECTION_NAME.aggregate([
{
$PIPELINE_OPERATION:{
field: { query }
}
}
])
db.COLLECTION_NAME.aggregate([
{
$EXPRESSION_OPERATION:{
key: value
}
}
])
That's all!