NoSQL介绍(七)
NoSQL介绍(七)
MongoDB介绍
官网www.mongodb.comc++编写,基于分布式,属于NoSQL的一种在NoSQL中是最像关系型数据库的MongoDB将数据存储为一种文档,数据结构由键值(key=>value)对组成。MongoDB文档类似于JSON对象。字段值可以包含其他文档、数组及文档数组。因为基于分布式,所以很容易扩展MongoDB和关系型数据库的对比
MongoDB安装
官方安装文档 https://docs.mongodb.com/manual/tutorial/install-mongodb-on-red-hat/
vim /etc/yum.repos.d/mongodb-org-3.6.repo[mongodb-org-3.6]name=MongoDB Repositorybaseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.6/x86_64/gpgcheck=1enabled=1gpgkey=https://www.mongodb.org/static/pgp/server-3.6.asc
yum list | grep mongodbyum install -y mongodb-org
MongoDB的连接
systemctl start mongod.servicenetstat -tlnp|grep mongodtcp 0 0 192.168.221.10:27017 0.0.0.0:* LISTEN 1999/mongod tcp 0 0 127.0.0.1:27017 0.0.0.0:* LISTEN 1999/mongodmongo --port 27017 --host 192.168.221.10mongo -uusername -ppasswd --authenticationDatabase db
MongoDB用户管理
mongo --port 27017 --host 192.168.221.10> use admin //切换到admin库> db.createUser({user:"admin",customData:{description:"superuser"},pwd:"admin",roles:[{role:"root",db:"admin"}]});> db.system.users.find();> show users;> db.createUser({user:"zs",pwd:"zs",roles:[{role:"read",db:"testdb"}]});//创建zs用户> db.dropUser('zs');//删除用户zs
使用用户名,密码连接mongo数据库,需要修改启动脚本并重启
vim /usr/lig/systemd/system/mongod.service //在"OPTIONS="后加"--auth"Environment="OPTIONS=--auth -f /etc/mongod.conf"systemctl daemon-reloadsystemctl restart mongod.service
mongo -u 'admin' -p 'admin' --authenticationDatabase 'admin' //需要指定数据库
在数据库db1中创建用户test1对db1库读写,对db2库只读。
> use db1;> db.createUser({user:"test1",pwd:"test1",roles:[{role:"readWrite",db:"db1"},{role:"read",db:"db2"}]});ctrl+dmongo -u 'test1' -p 'test1' --authenticationDatabase 'db1' > use db2;> db.auth("test1","test1"); Error: Authentication failed. //报错,因为用户test1在db1中创建
MongoDB用户角色
Read:允许用户读取指定数据库readWrite:允许用户读写指定数据库dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建,删除,查看统计或访问system.profileuserAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限dbAdminDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限root:只在admin数据中可用。超级账号,超级权限MongoDB创建集合
//db.createCollection(name,options);name就是集合的名字,iptions可选,用来配置集合的参数,参数如下:capped true/false:为true,则启用封顶集合。封顶集合是固定大小的集合,当它达到其最大大小,会自动覆盖最早的条目。如果指定true,则也需要指定尺寸参数。size (可选)指定最大大小字节封顶集合。如果封顶为true,还需要指定这个字段max 指定封顶集合允许在文件的最大数量。
> db.createCollection('mycol',{capped:true,size:6142800,max:10000});
查看集合
> show tables; 或 show collections
创建集合Account并插入内容
> db.Account.insert({AccountID:2,UserName:'lisi',password:'lisi'});
查看集合Account的所有内容及条件查询
> db.Account.find();> db.Account.find({AccountID:1});
根据条件删除Account集合中的一条记录
> db.Account.remove({AccountID:1});
打印集合状态
> db.printCollectionStats();
修改集合中的一条记录
> db.Account.update({AccountID:2},{"$set":{age:20}});
删除某个集合
> db.Account.drop();
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。