3.0.0 docker版本安装
下载docker镜像
[root@Centos76 ~]# docker pull mongo:3.0.0
[root@Centos76 ~]# docker tag mongo:3.0.0 10.1.17.22/mongodb/mongo:3.0.0
[root@Centos76 ~]# docker push 10.1.17.22/mongodb/mongo:3.0.0
rancher部署
连接数据库
测试连接报错
查看日志发现提示数据库用户不存在
登录mongo数据库命令行,创建用户后重新连接,显示成功
创建用户
MongoDB 目前内置了 7 个角色。
数据库用户角色:read、readWrite;
数据库管理角色:dbAdmin、dbOwner、userAdmin;
集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
备份恢复角色:backup、restore;
所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
超级用户角色:root;这里还有几个角色间接或直接提供了系统超级用户的访问(dbOwner 、userAdmin、userAdminAnyDatabase)
内部角色:__system
这些角色对应的作用如下:
Read:允许用户读取指定数据库
readWrite:允许用户读写指定数据库
dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限
userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
root:只在admin数据库中可用。超级账号,超级权限
db.createUser({
user: "root",
pwd:"123456",
roles:[{role:"dbAdmin",db:"admin"}]
})
db.createUser({
user: "dzz",
pwd:"123456",
roles:[{role:"read",db:"admin"}]
})
db.createUser({
user: "root",
pwd:"123456",
roles:[{role:"root",db:"admin"}]
})
//授予角色
db.grantRolesToUser(
"root",
[
{ role: "root", db: "admin" }
]
)
db.grantRolesToUser(
"root",
[
{ role: "root", db: "target" }
]
)
创建集合sql语句
/*
集合
*/
db.testuser.drop();
db.createCollection('testuser');
db.testuser.insert([{"name": "宦宜修", "GENDER": 0,"ID":1062,"ADDR":"北京市海淀区东北旺西路10号","MOBILE":"13770308930","TEL":"63363263163","EMAIL":"[email protected]","IDCARD":"640424194907080222","ORGCODE":"67190884-5","POSTCARD":"102211","BANKCARD":"6228484696795258541","DATETIME":"1970-01-01 08:00:01","OFFICIAL_CARD":"JIWENZIDI02-00509","TAXNUMBER":"44010069869033X","BUSINESSLICENCE":"110108001445941","PASSPORT":"E05746286","OFFICALCARD":"JIWENZIDI02-00509","VIN":"LSVCZ6A46FN058470","CARNUMBER":"京A12345","HKCARD":"R475936(1)","PASSBOOK":null,"DESC1":null,"DESC2":null,"ESC3D":null},
{"name": "宦宜修", "GENDER": 0,"ID":1061,"ADDR":"北京市海淀区东北旺西路10号","MOBILE":"13770308930","TEL":"63363263163","EMAIL":"[email protected]","IDCARD":"640424194907080222","ORGCODE":"67190884-5","POSTCARD":"102211","BANKCARD":"6228484696795258541","DATETIME":"1970-01-01 08:00:01","OFFICIAL_CARD":"JIWENZIDI02-00509","TAXNUMBER":"44010069869033X","BUSINESSLICENCE":"110108001445941","PASSPORT":"E05746286","OFFICALCARD":"JIWENZIDI02-00509","VIN":"LSVCZ6A46FN058470","CARNUMBER":"京A12345","HKCARD":"R475936(1)","PASSBOOK":null,"DESC1":null,"DESC2":null,"ESC3D":null},
{"name": "宦宜修", "GENDER": 0,"ID":1060,"ADDR":"北京市海淀区东北旺西路10号","MOBILE":"13770308930","TEL":"63363263163","EMAIL":"[email protected]","IDCARD":"640424194907080222","ORGCODE":"67190884-5","POSTCARD":"102211","BANKCARD":"6228484696795258541","DATETIME":"1970-01-01 08:00:01","OFFICIAL_CARD":"JIWENZIDI02-00509","TAXNUMBER":"44010069869033X","BUSINESSLICENCE":"110108001445941","PASSPORT":"E05746286","OFFICALCARD":"JIWENZIDI02-00509","VIN":"LSVCZ6A46FN058470","CARNUMBER":"京A12345","HKCARD":"R475936(1)","PASSBOOK":null,"DESC1":null,"DESC2":null,"ESC3D":null},
{"name": null, "GENDER": 0,"ID":1059,"ADDR":"北京市海淀区东北旺西路10号","MOBILE":"[email protected]","TEL":"63363263163","EMAIL":"[email protected]","IDCARD":"640424194907080222","ORGCODE":"67190884-5","POSTCARD":"102211","BANKCARD":"6228484696795258541","DATETIME":"1970-01-01 08:00:01","OFFICIAL_CARD":"JIWENZIDI02-00509","TAXNUMBER":"44010069869033X","BUSINESSLICENCE":"110108001445941","PASSPORT":"E05746286","OFFICALCARD":"JIWENZIDI02-00509","VIN":"LSVCZ6A46FN058470","CARNUMBER":"京A12345","HKCARD":"R475936(1)","PASSBOOK":null,"DESC1":null,"DESC2":null,"ESC3D":null},
{"name": null, "GENDER": 0,"ID":1058,"ADDR":"北京市海淀区东北旺西路10号","MOBILE":"[email protected]","TEL":"63363263163","EMAIL":"[email protected]","IDCARD":"640424194907080222","ORGCODE":"67190884-5","POSTCARD":"102211","BANKCARD":"6228484696795258541","DATETIME":"1970-01-01 08:00:01","OFFICIAL_CARD":"JIWENZIDI02-00509","TAXNUMBER":"44010069869033X","BUSINESSLICENCE":"110108001445941","PASSPORT":"E05746286","OFFICALCARD":"JIWENZIDI02-00509","VIN":"LSVCZ6A46FN058470","CARNUMBER":"京A12345","HKCARD":"R475936(1)","PASSBOOK":null,"DESC1":null,"DESC2":null,"ESC3D":null},
{"name": null, "GENDER": 0,"ID":1057,"ADDR":"北京市海淀区东北旺西路10号","MOBILE":"[email protected]","TEL":"63363263163","EMAIL":"[email protected]","IDCARD":"640424194907080222","ORGCODE":"67190884-5","POSTCARD":"102211","BANKCARD":"6228484696795258541","DATETIME":"1970-01-01 08:00:01","OFFICIAL_CARD":"JIWENZIDI02-00509","TAXNUMBER":"44010069869033X","BUSINESSLICENCE":"110108001445941","PASSPORT":"E05746286","OFFICALCARD":"JIWENZIDI02-00509","VIN":"LSVCZ6A46FN058470","CARNUMBER":"京A12345","HKCARD":"R475936(1)","PASSBOOK":null,"DESC1":null,"DESC2":null,"ESC3D":null},
{"name": null, "GENDER": 0,"ID":1056,"ADDR":"北京市海淀区东北旺西路10号","MOBILE":null,"TEL":"63363263163","EMAIL":"[email protected]","IDCARD":"640424194907080222","ORGCODE":"67190884-5","POSTCARD":"102211","BANKCARD":"6228484696795258541","DATETIME":"1970-01-01 08:00:01","OFFICIAL_CARD":"JIWENZIDI02-00509","TAXNUMBER":"44010069869033X","BUSINESSLICENCE":"110108001445941","PASSPORT":"E05746286","OFFICALCARD":"JIWENZIDI02-00509","VIN":"LSVCZ6A46FN058470","CARNUMBER":"京A12345","HKCARD":"R475936(1)","PASSBOOK":null,"DESC1":null,"DESC2":null,"ESC3D":null}
])
/*
聚合查询
*/
db.tstest.drop();
db.createCollection('tstest');
db.tstest.insert([
{"name": "田半梦,孙悟空", "GENDER": "0","phone_number":"18511076143","ID":997,"number":1,"ADDR":["北京市海淀区东北旺西路10号","黑龙江省海淀区东北旺西路10号"],"PHONE":{"code":"18511076143","phone_number":"01086460113"}},
{"name": "田半梦", "GENDER": "0","phone_number":"18511076143","ID":998,"number":2,"ADDR":["北京市海淀区东北旺西路10号","黑龙江省海淀区东北旺西路10号"],"PHONE":{"code":"18511076143","phone_number":"01086460123"}},
{"name": "田半梦,孙悟空", "GENDER": "0","phone_number":"18511076143","ID":997,"number":1,"ADDR":["北京市海淀区东北旺西路10号","黑龙江省海淀区东北旺西路10号"],"PHONE":{"code":"18511076143","phone_number":"01086460113"}},
{"name": "范雯莉手机号是18645380970", "GENDER": "0","phone_number":"18511076143","ID":997,"number":1,"ADDR":["北京市海淀区东北旺西路10号","黑龙江省海淀区东北旺西路10号"],"PHONE":{"code":"18511076143","phone_number":"01086460113"}},
{"name": "田半梦孙悟空", "GENDER": "0","phone_number":"18511076143","ID":997,"number":1,"ADDR":["北京市海淀区东北旺西路10号","黑龙江省海淀区东北旺西路10号"],"PHONE":{"code":"18511076143","phone_number":"01086460113"}},
])
/*
多个嵌套,多个标签在一个字段中
*/
db.tstest2.drop();
db.createCollection('tstest');
db.tstest2.insert([{"name":"田半梦,孙悟空","GENDER":"0","ID":997,"number":1,"ADDR":[
{"ttt": "张强家的地址是北京是海淀区东北旺西路10号,手机号码是18511076143",}
,{"add": "黑龙江省海淀区东北旺西路10号",}],"PHONE":{"aaaaa": {"bbbbb": {"ccccc": {"ddddd": {"eeeee":
{"fffff": "18511076143"}
}}}},'mmmmm': {mob: "01086460113"},'kkkkk': {mob: "01086460113"}}}])
db.inventory.drop();
db.createCollection('inventory');
db.inventory.insert([
{"name": "田半梦","age":29},
{"name": null,"age":30},
])
视图
db.tstest.find();
db.bb_view_0.drop();
db.createView("bb_view_0","tstest",[{$project:{"phone":"$PHONE.code",Subject:1}}]);
db.bb_view_0.find()
/*
索引
*/
/创建索引/
db.tstest.createIndex({"ID":1})
/查询索引/
db.tstest.getIndexes()
/*
函数
*/
db.tstest.aggregate( [{$group:{_id: null,count: { $sum: 1 }}}])//统计tstest表所有记录
db.tstest.aggregate( [{$group:{_id: null,total: { $sum: "$ID" }}}])//对tstest表计算所有ID求和
db.tstest.aggregate( [{$group: {_id: "$GENDER",total: { $sum: "$ID" }}}])//对每一个唯一的GENDER, 计算ID总和
db.tstest.aggregate({$project:{name:1}})//只显示脱敏后的姓名
db.tstest.aggregate({$unwind:"$ADDR"})//把ADDR数组拆分为单独的文档
db.tstest.aggregate([{$project:{ID:1,"name":1}},])//值显示id和name
db.tstest.aggregate({$project:{"name":1}},{ $limit: 1 });//只显示name
db.tstest.aggregate([{$group: { _id: 1, total: { $sum: "$number" } } }, { $sort: {ID:-1}}])//求number的和,倒叙
db.tstest.aggregate([{$lookup:{from: "inventory",localField: "name",foreignField: "name",as: "users"}}])//tstest中的name关联inventory集中name
db.inventory.aggregate([{$match:{name:'田半梦'}},{$lookup:{from:'tstest',localField:'name',foreignField:'name',as:'user'}}])//过滤,只有name是田半梦的数据,进行关联(显示不出数据即可)