MongoDB 的聚合
1、创建聚合
- 函数:db.collectionName.aggregate()
- 功能:聚合函数,配合聚合条件进行数据整理
2、$group聚合操作符(分组)
操作符 | 说明 |
---|
$sum | 求每组文档的个数,或求和 |
$avg | 求每组文档的平均数 |
$min | 求每组文档的最小值 |
$max | 求每组文档的最大值 |
$first | 求每组文档的第一个域的指定值 |
$max | 求每组文档的最后一个域的指定值 |
db.py.aggregate({$group:{_id:"$model",total:{$sum:1}}})
{
"_id" : "mate7",
"total" : 3
}
db.py.aggregate({$group:{_id:"$model",total:{$sum:"$price"}}})
{
"_id" : "mate7",
"total" : 12000
}
db.py.aggregate({$group:{_id:"$model",total:{$avg:"$price"}}})
{
"_id" : "mate7",
"total" : 4000
}
3、$project聚合操作符(修饰文档的显示结构)
db.py.aggregate({$project:{_id:0,model:1,price:1}})
{
"model" : "mate 20",
"price" : 5500
}
db.py.aggregate({$project:{_id:0,MODEL:"$model",PRICE:"$price"}})
{
"MODEL" : "mate 8",
"PRICE" : 3500
},
4、$match聚合操作符(过滤数据)
db.student.aggregate({$match:{stu_ID:"2019023105"}})
db.student.aggregate({$match:{stu_age:{$lt:18}}})
5、$limit聚合操作符(显示前几条数据)
db.student.aggregate([{$match:{stu_age:{$lt:20}}},{$limit:2}])
6、$skip聚合操作符(跳过前几条数据显示)
db.student.aggregate([{$match:{stu_age:{$lt:20}}},{$skip:1}])
7、$sort聚合操作符(排序)
db.student.aggregate({$sort:{stu_age:1}})
8、聚合管道
- 前一个聚合操作的结果给后一个聚合操作执行
- 格式:将多个聚合操作放在一个中括号内
db.student.aggregate([
{$match:{stu_sex:"w"}},
{$sort:{stu_age:1}},
{$limit:2}
])