第13章:MongoDB-聚合操作--初体验

博客介绍了MongoDB的聚合管道、单目的聚合操作和MapReduce编程模型。给出了插入数据的代码,并详细阐述了找到考80分以上学生的执行步骤,包括匹配、投影、分组、排序和限制结果数量,最后展示了最终执行语句。
①MongoDB 的聚合功能
MongoDB 的聚合功能,聚合操作主要用于对数据的批量处理,往往将记录按条件分组以后,然后再进行一系列操作,例如,求最大值、最小值、平均值,求和等操作。
聚合操作还能够对记录进行复杂的操作,主要用于数理统计和数据挖掘。
在MongoDB中,聚合操作的输入是集合中的文档,输出可以是一个文档,也可以是多条文档。

 

②聚合操作的三种方式

1、聚合管道(Aggregation Pipeline)

2、单目的聚合操作(Single Purpose Aggregation Operation)

3、MapReduce 编程模型

③聚合体验
--找出考80分以上的课程门数最多的3个学生
 
准备样例数据

for(var i=0;i<100;i++){

   for(var j=0;j<4;j++){

       db.scores.insert({"studentId":"s"+i,"course":"课程"+j,"score":Math.random()*100});

   }

}

 

 

执行步骤

1:找到所有考了80分以上的学生,不区分课程

{"$match":{"score":{$gte:80}}}

2:将每个学生的名字投影出来

{"$project":{"studentId":1}}

3:对学生的名字排序,某个学生的名字出现一次,就给他加1

{"$group":{"_id":"$studentId","count":{"$sum":1}}}

4:对结果集按照count进行降序排列

{"$sort":{"count":-1}}

5:返回前面的3条数据

{"$limit":3}

 

最终执行的语句就是

db.scores.aggregate(

 {"$match":{"score":{$gte:80}}},

 {"$project":{"studentId":1}},

 {"$group":{"_id":"$studentId","count":{"$sum":1}}},

 {"$sort":{"count":-1}},

 {"$limit":3}

)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

转载于:https://www.cnblogs.com/Lucky-stars/p/10555200.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值