博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mongodb中使用分组,聚合和映射-归并
阅读量:3683 次
发布时间:2019-05-21

本文共 1364 字,大约阅读时间需要 4 分钟。

分组group()语法

group(key , reduce ,initial, [keyf] , [cond] , finalize)

key : 一个指定要根据哪些键进行分组的对象,其属性为要用于分组的字段。
cond : 可选参数。这是一个query对象,决定了初始结果集将包含哪些文档。
initial : 一个包含初始字段和初始值的初始group对象,用于在分组期间聚合数据
reduce : 一个接受参数obj和prev的函数(function(obj,prev)),对于每个与查询匹配的文档,都执行这个函数。其中参数obj为当前文档,而prev是根据参数initial创建的对象,这让您能够根据obj来更新prev
finalize : 一个接受唯一参数的obj的函数(function(obj)),这个参数是对与每个键值组合匹配的最后一个文档执行reduce函数得到的。
keyf : 可选参数,用于替代参数key,可以不指定其属性为分组字段的对象,而指定一个函数。可以使用函数动态地指定要根据哪些键进行分组。

查出persons中每个国家学生数学成绩最好的学生信息(必须在90以上)

这里写图片描述

db.persons.group({ key:{
"country":true}, initial:{m:0}, reduce:function(obj,prev){ if(obj.m>prev.m){ prev.m=obj.m; prev.name=obj.name; prev.country=obj.country; }}, cond:{m:{$gt:90}} })

说明比如中国有两个学生的数学成绩都为96,只会显示顺序上先出现的学生

聚合$group用法

这里写图片描述
这里写图片描述

db.testOrder.aggregate([{
$match:{status:{
$in:["A","B","C"]}}},{
$group:{_id:"$status",totalAmount:{
$sum:"$amout"}}}])

mapReduce()语法

mapReduce(map, reduce , argument )

参数map是一个函数,将对数据集中的每个对象执行它来生成一个键和值,这些值被加入到与键相关联的数组中,供归并阶段使用。
参数reduce是一个函数,将对map函数生成的每个对象执行它。reduce函数必须将键作为第一个参数,将与键相关联的值数组作为第二个参数。
参数arguments是一个对象,指定输出到什么地方。

这里写图片描述

(1)统计不同地方(‘Guangzhou,Beijing,Shanghai,Shanxi’)的人的岁数总和
这里写图片描述
(2)统计不同地方(‘Guangzhou,Beijing,Shanghai,Shanxi’)的人数总和
这里写图片描述
(3)统计不同地方(‘Guangzhou,Beijing,Shanghai,Shanxi’)的人名列表
这里写图片描述
(4)统计不同地方(‘Guangzhou,Beijing,Shanghai,Shanxi’),并且年龄在25岁(不包括25岁)以下的人名列表
这里写图片描述

你可能感兴趣的文章
混合云支持敏捷内容管理和协作
查看>>
使用OpenText content Suite和OpenText Core Share简化内容共享
查看>>
坚果pro2MIUI10修改按键功能
查看>>
高通驱动安装教程
查看>>
坚果Pro2刷入twrp rec
查看>>
A + B Again
查看>>
单词数
查看>>
空心三角形
查看>>
F - A1 = ?
查看>>
NN and the Optical Illusion(数学)
查看>>
检查宿舍卫生
查看>>
选夫婿2
查看>>
英文金曲大赛
查看>>
选票统计
查看>>
名单真相
查看>>
最终排名
查看>>
小鑫の日常系列故事(十)——排名次
查看>>
老--质价比
查看>>
选夫婿1
查看>>
共用体练习
查看>>