有段时间没用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数据库中可用。超级账号,超级权限