聚合 aggregate
- 聚合(aggregate)主要用于計(jì)算數(shù)據(jù),類似sql中的sum()晤锹、avg()
- 語法
db.集合名稱.aggregate([{管道:{表達(dá)式}}])
管道
- 管道在Unix和Linux中一般用于將當(dāng)前命令的輸出結(jié)果作為下一個命令的輸入
ps ajx | grep mongo
- 在mongodb中摩幔,管道具有同樣的作用, 文檔處理完畢后鞭铆,通過管道進(jìn)行下一次處理
- 常用管道
- $group:將集合中的文檔分組或衡,可用于統(tǒng)計(jì)結(jié)果
- $match:過濾數(shù)據(jù),只輸出符合條件的文檔
- $project:修改輸入文檔的結(jié)構(gòu)车遂,如重命名封断、增加、刪除字段艰额、創(chuàng)建計(jì)算結(jié)果
- $sort:將輸入文檔排序后輸出
- $limit:限制聚合管道返回的文檔數(shù)
- $skip:跳過指定數(shù)量的文檔澄港,并返回余下的文檔
- $unwind:將數(shù)組類型的字段進(jìn)行拆分
表達(dá)式
- 處理輸入文檔并輸出
- 語法
表達(dá)式:'$列名'
- 常用表達(dá)式
- $sum:計(jì)算總和,$sum:1同count表示計(jì)數(shù)
- $avg:計(jì)算平均值
- $min:獲取最小值
- $max:獲取最大值
- $push:在結(jié)果文檔中插入值到一個數(shù)組中
- $first:根據(jù)資源文檔的排序獲取第一個文檔數(shù)據(jù)
- $last:根據(jù)資源文檔的排序獲取最后一個文檔數(shù)據(jù)