MongoDB 聚合操作 aggregate

MongoDB的聚合操作aggregate用于处理数据集并返回统计结果。文章介绍了常用的管道操作,包括分组($group)、过滤($match)、投影($project)、排序($sort)、跳过($skip)、拆分数组($unwind),并通过实例展示了如何使用这些操作。通过聚合,可以实现数据的筛选、统计和转换等功能。
摘要由CSDN通过智能技术生成

MongoDB

聚合 aggregate

聚合操作就是把源数据集放到管道里加以处理得到统计后的结果
db.collectionName.aggregate([{ 管道 :{ 表达式 }}])

常用管道:

  1. $group:给集合的文档分组,可用于统计结果,相当于GROUP BY
  2. $match:过滤数据,只输出符合条件的文档,相当于HAVING
  3. $project:选出来原始文档中的某些字段
  4. $sort:将输入排序后输出
  5. $limit
  6. $skip
  7. $unwind:将数组类型的字段进行拆分

常用表达式:

  1. $sum:计算综合,$sum:1和count一样表示计数
  2. $avg$min$max 等等类似
  3. $push:在结果文档中插入值到一个数组当中去
  4. $first / $last:获取第一个/最后一个文档数据

分组 $group

counter:累计器

    db.hi.aggregate([{
   
        $group: {
   
          _id: "$gender",  // 基于谁分组 ,①先把gender一样的分组(分出男女两组,每组若干个文档)
		  //_id:null   // 整个集合分为一组
          counter: {
      // 结果字段的统计方式(计数、求和、求平均数) ,②再分别在每个组內统计:
            $sum: 1  //  $sum: 1 就是 sql里的count(*) ,计数每组文档数量
		  //$avg:"$age",  // 该组所有成员的某个键对应的平均值(该组年龄的平均值)
		  //$last:"$age"  //  该组所有成员某个键对应的最后一个值(该组年龄的最后一个值,排序后有意义)
		  //$push:"$age"  //  该组所有成员某个键对应的值插入到一个数组里(该组所有年龄插入数组)
		  //$push:"$$ROOT"  //  该组所有成员的完整文档插入到一个数组里
          }
        }
      }]

过滤 $match

和find方法一样,find是不能进行统计的,$match可以统计
管道內先写match后写group,

  db.collection.aggregate(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值