2020MongoDB进阶-聚合查询
基础
2020MongoDB基本命令-C操作(增)
2020MongoDB基本命令-R操作(查)
2020MongoDB基本命令-U操作(改)
2020MongoDB基本命令-C操作(删)
进阶
2020MongoDB进阶-排序、分页
2020MongoDB进阶-聚合查询
持续更新…
语法
db.集合名.aggregate([
{管道:{表达式}}
])
常用管道
管道名 | 功能 |
---|---|
$group | 将集合中的文档分组。用于统计结果 |
$match | 过滤数据只输出符合条件的文档 |
$sort | 聚合数据进一步排序 |
$skip | 跳过指定文档数 |
$limit | 限制集合返回的文档数量 |
常用表达式
表达式名 | 作用 |
---|---|
$sum | 总数量 |
$avg | 平均 |
$min | 最小值 |
$max | 最大值 |
准备工作:插入数据
db.c1.insert({_id:1,name:"a",sex:1,age:1})
db.c1.insert({_id:2,name:"a",sex:1,age:2})
db.c1.insert({_id:3,name:"b",sex:2,age:3})
db.c1.insert({_id:4,name:"c",sex:2,age:4})
db.c1.insert({_id:5,name:"d",sex:2,age:5})
示例1:统计男生、女生的总年龄
db.c1.aggregate([
{
$group:
{
_id:"$sex",
result:{$sum:"$age"}
}
}
])
结果
示例2:求男生女生的总人数
db.c1.aggregate([
{
$group:
{
_id:"$sex",
result:{$sum:1}
}
}
])
结果
示例3:求学生总数和平均年龄
db.c1.aggregate([
{
$group:
{
_id:null,
total_num:{$sum:1},
total_avg:{$avg:"$age"}
}
}
])
结果
示例4:查询男生人数,女生人数,按人数升序
db.c1.aggregate([
{
$group:
{
_id:"$sex",
total_num:{$sum:1},
}
},
{
$sort:{total_num:1}
}
])
结果