有段时间没用MongoDB了,最近因为业务需要开始使用MongoDB。这里就简单总结一下常用命令。
1.连接及查看所有数据库
mongo 主机ip:端口号/连接的数据库名 -u 用户名 -p 密码 //连接远程主机
mongo mongodb://root:12345@10.100.10.10:27017,10.100.10.11:27017/test //连接集群,会提示输入用户名密码
show databases
或
show dbs
db / db.getName() //查看当前数据库名称
db.stats() //显示当前DB的状态
db.version() //查看当前DB的版本
db.getMongo() //查看当前DB的连接的主机地址
2.创建或切换数据库
use log
如果数据库log存在,则切换到log数据库下,如果不存在则创建log数据库。
这里提示一下,一般使用的连接的用户权限大都是指定的几个数据库的权限,这里新建的数据库需要单独赋权限,或者新建用户再赋予新建数据库的权限。下面会讲用户权限相关内容。
3.数据集合
MongoDB中的集合(等同于mysql中的表)只有在插入一条数据后才会创建。
常用命令:
db //指当前数据库
db.createCollection("people") //创建名为people的集合
show collections //查看当前数据库下所有的集合
db.people.insert({"name":"张三", "age":18}) //插入一条name是张三 age是18的数据
db.people.insertOne() // 插入单条数据
db.people.inserMany() // 插入多条数据
db.people.find() //查询people集合下的所有数据
db.people.find().pretty() //格式化显示
db.people.find({"name":"张三"}) //查询people集合下name等于“张三”的所有数据
db.people.find({"age":{$lt:18}}) //查询age<18的所有数据
db.people.find({"age":{$lte:18}}) //查询age<=18的所有数据
db.people.find({"age":{$gt:18}}) //查询age>18的所有数据
db.people.find({"age":{$gte:18}}) //查询age>=18的所有数据
db.people.find({"age":{$lte:18,$gte:16}}) //查询age>=16且age<=18的所有数据
db.people.find({"name":/三/}) //查询name中包含”三“的所有数据
db.people.find({"name":/^三/}) //查询name中包以”三“开头的所有数据
db.people.find({},{name:1}) //只显示字段name
db.people.find({},{name:0}) //显示除字段name外的所有字段
错误示范:db.people.find({},{name:1,age:0}) //除_id字段外其余写入条件中的字段要么都是1要么都是0
db.people.find().sort({age:1}) //按age进行升序排列 -1位降序排列
db.people.find({name:/三/},{name:1,_id:0}).sort(age:-1) //查询name中包含”三“的数据,只显示name字段,不显示_id字段,并按age进行降序排列
db.people.find().limit(10) //查询10条数据
db.people.find().skip(5) //查询5条以后的数据
db.people.find().skip(5).limit(10) //查询6~15条数据
db.people.find({$or:[{age:10},{age:12}]}) //查询age=10或age=12的数据
db.people.fineOne() //查询满足条件的第一条数据
db.people.fine({age:{$gt:18}}).count() //查询age>18的数据条数
4.创建用户
show users //查看所有用户
//创建用户
db.createUser({
user:"lisi", //用户名
pwd:"12345", //密码
roles:[
{role:"dbOwner",db:"log"},
{role:"read",db:"log1"}
],
"mechanisms" : [ //认证机制
"SCRAM-SHA-1"
]
})
db.dropUser('lisi') //删除用户
角色:
数据库用户角色:read、readWrite;
数据库管理角色:dbAdmin、dbOwner、userAdmin;
集群管理角色:clusterAdmin、clusterManager、4. clusterMonitor、hostManage;
备份恢复角色:backup、restore;
所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
超级用户角色:root
内部角色:__system
权限:
Read:允许用户读取指定数据库
readWrite:允许用户读写指定数据库
dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
userAdmin:允许用户向system.users集合写入,可以在指定数据库里创建、删除和管理用户
clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限
userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
root:只在admin数据库中可用。超级账号,超级权限