加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

聚合操作及聚合管道

发布时间:2020-12-14 05:05:48 所属栏目:百科 来源:网络整理
导读:聚合操作 对文档的筛选结果进程整理统计 db.collection.aggregate() 功能:完成聚合操作 参数:聚合条件 ---- 聚合操作符 聚合操作符 $group? ?分组聚合? ? 需要配合具体的分组选项 $sum 求和 db.class1.aggregate({$group:{_id:‘$gender‘,num:{$sum:1}}})

聚合操作

对文档的筛选结果进程整理统计

db.collection.aggregate()
  功能:完成聚合操作
  参数:聚合条件 ----> 聚合操作符

聚合操作符
$group? ?分组聚合? ? 需要配合具体的分组选项

  $sum 求和
    db.class1.aggregate({$group:{_id:‘$gender‘,num:{$sum:1}}})
              分组? ?按照gender值统计? ? 统计结果,求和每有一个加1
    统计所有男生和女生的年龄之和
     db.class1.aggregate({$group:{_id:‘$gender‘,num:{$sum:‘$age‘}}})

  $avg 平均值
    求男生 女生年龄的平均数
     db.class1.aggregate({$group:{_id:‘$gender‘,num:{$avg:‘$age‘}}})

  $max 求最大值
    求男生女生的年龄最大值
     db.class1.aggregate({$group:{_id:‘$gender‘,num:{$max:‘$age‘}}})

  $min 求最小值
    求男生女生的年龄最小值
     db.class1.aggregate({$group:{_id:‘$gender‘,num:{$min:‘$age‘}}})

$project 修改文档的显示效果
  $project值的用法同find()的field参数相同
   db.class1.aggregate({$project:{_id:0,name:1,age:1}})
  自定义显示的域名,但只是显示而已,真实的却没有改变。
   db.class1.aggregate({$project:{_id:0,Name:‘$name‘,Age:‘$age‘}})

$match 过滤想要的数据
  过滤年龄大于30的数据,$match值的写法同query
   db.class1.aggregate({$match:{age:{$gt:30}}})

$limit 显示前n个文档
  db.class1.aggregate({$limit:n})

$skip 跳过n条文档显示
  db.class1.aggregate({$skip:n})

$sort 排序
  按照年龄排序
   db.class1.aggregate({$sort:{age:1}})

聚合管道

定义:将前一个聚合操作产生的结果,交给后一个聚合操作继续使用

语法:db.collection.aggregate([{聚合1},{聚合2},{}...])

例子:

  db.class1.aggregate([{$match:{gender:‘m‘}},{$sort:{age:1}},{$project:{_id:0}}])  选出所有的男生,在按年龄升序排序,且不显示_id

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读