0%

Mongo使用shell操作

Mongo使用shell操作

创建数据库

1
use DATABASE_NAME

如果数据库不存在,则会创建数据数据库,否则会切换到该数据库

查看数据库

1
show dbs

创建用户

1
2
3
4
# root用户
db.createUser({user:"root",pwd:"root",roles:["root"]})
#读写权限 readWrite表示读写权限,对yapi有读写权限,对admin有读权限
db.createUser({user:"work",pwd:"work",roles:[{role:"readWrite",db:"yapi"},{role:"read",db:"admin"}]})

MongoDB 数据库默认角色

角色描述 角色标识
数据库用户角色 read、readWrite
数据库管理角色 dbAdmin、dbOwner、userAdmin
集群管理角色 clusterAdmin、clusterManager、clusterMonitor、hostManager
备份恢复角色 backup、restore
所有数据库角色 readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、 dbAdminAnyDatabase
超级用户角色 root

查看该数据库下用户

1
show users

删除用户

1
db.dropUser("work")

修改用户密码

1
db.updateUser("work",{pwd:"123456"})

登录

1
db.auth("work","work")

插入文档

MongoDB通过集合来管理数据库,类似于数据库表,集合中包含了多个文档,文档类似于数据库表的记录

1
2
3
# t_log为集合名称,不存在时会自动创建
# _id表示文档主键,如果没有显式提供该主键,系统会自动生成一个主键
db.t_log.insert({_id:"aa",desc:"测试数据"})

查询文档

1
2
3
4
5
# 查询所有
db.t_log.find()

# 通过条件查找 根据字段值查
db.t_log.find({_id:"aa"})

常用的查询

  • $gt 相当于大于,如 “goods”:{$gt:100}
  • $gte 相当于大于等于,如 “goods”:{$gte:100}
  • $lt 相当于小于,如 “goods”:{$lt:100}
  • $lte 相当于小于等于,如 “goods”:{$lte:100}
  • $eq 相当于等于,如”goods”:{$eq:100} 或者 {“goods”:100}
  • $ne 相当于不等于,如”goods”:{$ne:100}
  • $in 相当于in,如”tag”:{$in:[“JAVA”,”C++”]}
  • $nin 相当于not in

更新操作

1
db.t_log.updateOne({_id:"aa"},{$set:{"desc":"测试数据01"}})

有多种语法

1
2
3
db.collection.updateOne(<filter>,<update>,<options>)
db.collection.updateMany(<filter>,<update>,<options>)
db.collection.replaceOne(<filter>,<replacement>,<options>)

replaceOne和updateOne的区别在于前者是替换整个文档,后者是更新部分文档

options有如下选项

  • upsert,默认为false,如果设置为true,未匹配的文档会insert到数据库中
  • writeConcern,对写入进行配置
    • w,默认是{w:0},表示写入后不需要数据库发送确认ACK;{w:1},数据写入大主库就会向客户端发送确认;{w:”majority”},数据写入到所有节点后向客户端发送确认
    • wtimeout,当w大于1时,设置一个等待时间,单位为毫秒,如果超过这个时间,即使数据成功写入,客户端也会得到一个错误消息

删除操作

1
2
3
4
5
# 删除所有文档
db.t_log.deleteMany({})

# 删除一条记录
db.t_log.deleteOne({_id:"aa"})

欢迎关注我的其它发布渠道