输入mongosh进入
showdbs
使用use + 数据库名字切换数据库
不需要手动建表,插入一条数据,就自动创建表,同时完成数据的插入
增:
db.user.insertOne({name:"zhangsan",age:18})
db.user.find() //查询表中数据
show collections显示当前数据库下所有表(mongodb中叫collection)
插入多条数据db.user.insertMany([{name:"zhangsan1",age:19},{name:"zhangsan2",age:20}]),参数json数组
查:
db.user.find()无参数表示没有查询条件
db.user.find({age: 18}) //age=18
db.user.find({age: {$gt: 19}}) //age>19
gt: 表示>; lt: 表示< ; gte: 表示>=;lte: 表示<= (g:greater,t:than,e:equal)
db.user.find({age: {$gt: 19, $lt: 22}}), age在 (19,22)之间
//模糊查询,性能不佳,数据量大时需要借助第三方库
db.user.find({name: /zhang/}) //包含zhang
db.user.find({name: /^z/}) //查找以z开头
db.user.find({name: /n$/}) //以n结尾
db.user.find({}, {age:1}) //查询结果只包括age这一列,第一个{}里可以添加查询条件
db.user.find().sort({age: 1}) //age升序, "age": -1降序
db.user.find().limt(5) //查询前5条数据
db.user.find().skip(10)//查询10条之后的数据
db.user.find().count() //计数
db.user.find({$or: [{age:22}, {age: 25}]}) //查询age=22或者age=25的数据
db.user.findOne() //查询第一条
改:
db.user.updateOne({"name":"zhangsan"},{$set: {"name":"zangshan"}})
第一个参数是查询,第二个参数是要改的内容
删:
db.user.deleteOne({nam: "zangshan"})
db.user.deleteMany({age: 19})
删除表
db.user.drop()
删除数据库:
db.dropDatabase()
索引:
db.user.ensureIndex({"name":1},{"name": "name_index"}) //创建索引,第二个参数给索引设置名字,没有则默认
db.user.ensureIndex({"name":1,"age":-1}) //复合索引,创建了name和(name_age的索引),age没有单独索引。因此如果想用到复合索引,必须在查询条件中包含复合索引中的前N个索引列
db.user.ensureIndex({"name":1},{"unique",true}) //唯一索引,则集合中的name的值不能重复
db.user.dropIndex({"name":1}) //删除索引
db.user.getIndexes() //获取当前集合的索引
mongo数据库设置权限
1.数据库用户角色:read、readWrite;
2.数据库管理角色:dbAdmin、dbOwner、userAdmin;
3.集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
4.备份恢复角色:backup、restore;
5.所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
6.超级用户角色:root
//这里还有几个角色间接或直接提供了系统超级用户的访问(dbOwner 、userAdmin、userAdminAnyDatabase)
其中MongoDB默认是没有开启用户认证的,也就是说游客也拥有超级管理员的权限。userAdminAnyDatabase:有分配角色和用户的权限,但没有查写的权限,不能用作备份。
use admin //切换到admin
db.createUser({"user":"root","pwd":"123456","roles":[{"role":"root", "db": "admin"}]})
show users //显示当前所有用户
db.dropUser("root")
db.updateUser("root", {"pwd":"111111"}) //修改密码
打开mongo配置文件,vi /usr/local/etc/mongod.conf
增加如下配置
security:
authorization: enabled
systemLog:
destination: file
path: /usr/local/var/log/mongodb/mongo.log
logAppend: true
storage:
dbPath: /usr/local/var/mongodb
net:
bindIp: 127.0.0.1, ::1
ipv6: true
security:
authorization: enabled
重启mongo服务
brew services restart mongodb/brew/mongodb-community
设置权限登陆后,游客就不能够再随意查看数据库了
mongosh admin -u root -p 111111,使用用户名和密码来登陆
//给指定数据库test1创建owenr
use test1
db.createUser({"user":"zhang","pwd":"123456","roles":[{"role":"dbOwner", "db": "test1"}]})
mongosh test1 -u zhang -p 123456 //以zhang身份连接数据库test1