Mongodb笔记(三)user aggregate mapReduce
版本:mongodb3.4。
User:
mongodb使用验证登录;默认不开启,mongod中使用--auth开启:
mongod -port=3000 --auth ;
基本方法:
db.createUser({user:username,pwd:passwd,roles:[ {role: ' readWrite' , db : 'db1'} ] //定义这个用户对应db的权限。
});db.updateUser(username,{pwd:'',roles:[]
}) db.dropUser(username);db.changeUserPassword(username,newpswd);
具体roles:参见
在mongod开启验证前先在默认模式下,创建超级用户:
mongo:
use admin;
db.createUser({user : 'myRoot' , pwd: '***' , roles: [ role:'root' , db:'admin' ] });
在创建好超级用户后,再开启mongod的验证模式,这样以后就能考靠这个超级用户来创建其他用户了。
登录mongod:
mongo -port=3000 -username=myRoot -password= *** -authenticationDataBase=admin
authenticationDataBase ,指定你登录的DataBase.
另一种方法:
mongo -port=3000;
use admin;
db.auth('myRoot','***');
登录后因为你是超级用户所以可以创建其它用户,并指定权限。
mongodb在用户登录时,使用明文传输数据。建议使用TSL。
Aggregate:
Instance:
db.test.aggregate([
{$match: {city: 'shanghai' }}, //匹配城市是上海的人。
{$limit:5}, //只取5个document。
{$group:{_id:'$sex' , ageAvg: {$avg:'$age'} }} //将这5个人按照性别分组,ageAvg获得他们的平均属性。
])
aggregate中的可用操作符是比较多,比如$project:
db.test.aggregate([{$group:{id:'$sex', ageArr: { $push : '$age'}}} ,{$project: {_id:'$name', sumAge: {$reduce:{input:'$ageArr',initialVal: 0,in: [ '$$value' ,' $$this'] //value指initialVal的值,this指遍历ageArr时的当前值。}}}}
])
其实功能是相同于$group:{_id:'$sex',ageArr:{$sum:'$age'}}的。不过这个例子的灵活性更高。
project可以理解为基于上一个collection,做一个映射的collection。
再介绍一个$redact:
可以根据field,甚至内嵌文档中的field,来过滤document.
db.test.aggregate([{$math:{city:'shanghai'}},{$redact:{$cond:{if: {$gt:['$age', 15 ]}, //比较操作符:大于15返回ture;小于false;then:$$DESCEND, //true,那么继续下降,到内嵌文档,进行判断。else: $$PRUNE, //false,删除当前文档。}}}
])
redact还有一个Variable:$$keep意为保持现状,不删除,不下降。
age小于15的document将被删除,父document的age属性大于15,但因为配置了$$DESCEND,如果子document中age小于15,整个document都会被删除。
而如果父document中没有age属性,子document中即便age小于15,也不会被删除。
mapReduce
db.test.mapReduce(map(), //2reduce(), //3{query: {age:{$gt:10}}, //1 step1标记是执行顺序。首先筛选age大于10的。out:'ouo_file', //5 step5 最后生成的collection导出在out_file这个colletion中。finalize:finalize() //4}
);function map(){emit(this.name,this.age); //step2 可以随便发送。第一个值将作为主键,用于分组。第二个值,被push入各组的array中。
}function reduce(key,values){ //step3 组已经被分好,这里处理这个array。并返回一个值。这样新的collection就快要诞生了。return values.reduce((pre,cur)=>{ return pre*cur;})
}
function finalize(val){ //step4 为处理后的array值再做一次更改,此步可以省略。return 'result:' +val;
}
序号是其执行顺序。mapReduce比aggregate灵活些。不过aggregate的方法都是内部封装,性能上要优于mapReduce。而一般情况,aggregate都能满足需求。
out的其他选项:
out:{ merge:'out_put'}; 与已存在的out_put进行合并。
out:{ reduce :'out_put'}; 将所得的value值与已存在的out_put内每个document 中value值相+ ( string+string ,number+number)。
转载于:https://www.cnblogs.com/ztwBlog/p/6282367.html
Mongodb笔记(三)user aggregate mapReduce相关推荐
- mongodb笔记(三)
1.删除文档(remove()函数) 在执行remove()函数前先执行find()命令来判断执行的条件是否正确,这是一个比较好的习惯. 语法: db.collection.remove(<qu ...
- Mongodb使用学习笔记(三)
文章目录 Mongodb使用学习笔记(三) 1. MongoDB 更新文档 1.1 update() 1.2 save() Mongodb使用学习笔记(三) 1. MongoDB 更新文档 参考:Mo ...
- mongo学习笔记四:Mongodb的三种集群(Replica Set)
Replica Set 中文翻译叫做副本集,不过我并不喜欢把英文翻译成中文,总是感觉怪怪的.其实简单来说就是集群当中包含了多份数据,保证主节点挂掉了,备节点能继续提供数据服务,提供的前提就是数据 ...
- MongoDB聚合查询 Pipeline 和 MapReduce
MongoDB聚合查询 MongoDB聚合查询 什么是聚合查询 Pipeline聚合管道方法 聚合流程 详细流程 聚合语法 常用聚合管道 $count $group $match $unwind $p ...
- SpringBoot整合Mongodb(三) 使用MongoTemplate进行连表查询
SpringBoot整合Mongodb(三) 使用MongoTemplate进行连表查询 由于在实际开发项目中,突然涉及到了需要Mongodb 进行连表操作的业务,所以我在私下进行了一波学习. 服务器 ...
- Hadoop读书笔记(六)MapReduce自定义数据类型demo
Hadoop读书笔记(一)Hadoop介绍:http://blog.csdn.net/caicongyang/article/details/39898629 Hadoop读书笔记(二)HDFS的sh ...
- Hadoop读书笔记(八)MapReduce 打成jar包demo
Hadoop读书笔记(一)Hadoop介绍:http://blog.csdn.net/caicongyang/article/details/39898629 Hadoop读书笔记(二)HDFS的sh ...
- MongoDB笔记记录(雷哥课堂)–基本命令
MongoDB笔记记录(雷哥课堂)–基本命令 3 常用命令 3.1 数据库操作 3.1.1 选择和创建数据库 use 数据库名称 如果数据库不存在就自动创建,如果存在则选择该数据库 以下数据库名是保留 ...
- J2EE学习笔记三:EJB基础概念和知识 收藏
J2EE学习笔记三:EJB基础概念和知识 收藏 EJB正是J2EE的旗舰技术,因此俺直接跳到这一章来了,前面的几章都是讲Servlet和JSP以及JDBC的,俺都懂一些.那么EJB和通常我们所说的Ja ...
- tensorflow学习笔记(三十二):conv2d_transpose (解卷积)
tensorflow学习笔记(三十二):conv2d_transpose ("解卷积") deconv解卷积,实际是叫做conv_transpose, conv_transpose ...
最新文章
- MATLAB_7-彩色图像【长长的笔记!】车牌放在文章末尾有链接
- 汪潮涌:AI创业落地为王,技术和算法难以成为核心壁垒
- Gartner发布2021年重要战略科技趋势
- Java多线程与并发控制
- C++语言基础 —— STL —— 容器与迭代器 —— map 与 multimap
- 使用Castle做类的增强
- 《一》Java EE
- python version 3_VIM设置python3支持和检测python version
- win7打印服务经常无缘无故自动停止print spooler服务停止
- 全球餐厅库存管理软件行业调研及趋势分析报告
- 【平衡小车制作】(二)电机驱动(超详解)
- Cloudflare DDNS梅林插件代码
- js 文件下载请求两种方式
- 编码:隐匿在计算机软硬件背后的语言(1)--编码到二进制数字系统
- python使用ffmpeg批量将flv转mp4
- python 成语接龙-连接数据库
- 电脑出现白屏怎么办(软件有的能打开,就是一开机就出现白屏)(亲测有效)
- 概率DP——BZOJ4008 [HNOI2015]亚瑟王
- thinkpad笔记本 刷bios失败,被救回方法
- MySQL 汉字提取首字母、姓名首字母全拼、姓名转拼音
热门文章
- html5 乱码解决方案
- 06-08 Jenkins 自动化测试持续集成
- 金融数据分析与挖掘实战1.5.2-1.5.3
- 做web前端的小伙伴注意了,未来这些发展方向可以试试!
- 最详细,快速入门Web前端开发的正确姿势
- Web前端基础知识整理
- python中pcolor_python中pcolormesh-女性时尚流行美容健康娱乐mv-ida网
- python爬虫获取标签规则_Python爬虫之数据提取-selenium定位获取标签对象并提取数据...
- linux集群组建和管理,Redis集群搭建与管理
- python计算auc的代码_python是怎么计算auc指标的?