Mongo 指令

基础指令

  • 登录mongo

db.auth("admin","admin")
  • 查看mongo版本

./bin/mongo --version
  • 查看数据库详细信息

use admin
db.stats()
  • 查看所有数据库

show dbs
  • 删除数据库

use database
db.dropDatabase()  //切换到要删除的数据库下
  • 修改数据库名

没有直接的方法可以使用,只能先将数据库复制一份为新的数据库名,然后再将原数据库删除即可

db.copyDatabase('old_name', 'new_name'); 
use old_name
db.dropDatabase();

用户操作

  • 创建用户

db.createUser({user:"admin",pwd:"admin",roles:[{role:"readWrite", db:"admin"}]})
db.createUser({user:"admin",pwd:"admin",roles:[{role:"dbOwner", db:"admin"}]})
rs.initiate()
  • 查看用户

db.system.users.find()
  • 修改密码

db.changeUserPassword("name","newpwd")
  • 删除用户

show users;
db.dropUser('usertest')
  • 修改用户权限

db.updateUser("usertest",{roles[role:"readWrite",db:"testDB"]})
db.grantRolesToUser("usertest",[{role:"readWrite",db:"testDB"},{role:"read",db:"testDB"}]})
  • 取消权限

db.revokeRolesFromUser("usertest",[{role:"read",db:"testDB"}])
  • 查看全局所有用户

db.system.users.find().pretty()
  • 用户权限

类别

角色

数据库用户角色

read、readWrite

数据库管理角色

dbAdmin、dbOwner、userAdmin

集群管理角色

clusterAdmin、clusterManager、clusterMonitor、hostManager

备份恢复角色

backup、restore

所有数据库角色

readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase

超级用户角色

root ( dbOwner 、userAdmin、userAdminAnyDatabase )

内部角色

__system

上述表格角色对应的作用如下:

Read:允许用户读取指定数据库
readWrite:允许用户读写指定数据库
dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问
system.profileuserAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限
userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
root:只在admin数据库中可用。超级账号,超级权限

集合索引

# 创建集合
db.createCollection("name",options)

# 删除集合
db.collection.drop()

# 插入数据
db.test.insert({"name":"xxx"})

# 查看已有集合
show collections

# 创建索引
db.nfSsslJyrz.createIndex({"djxh":1},{background:true})

# 查询索引
db.nfSsslJyrz.getIndexes();

# 删除索引
db.user.dropIndex("alarm_rule_id");

# 查询数据/数量
db.test.find()  /  db.test.count()

查询

  • 单条件查询

db.getCollection('assets_info_test1009').find({feature_type:"TS_BLINDWAY"})
db.getCollection('assets_info_test1009').find({id:12}).limit(10) # 查询10条
db.getCollection('assets_info_test1009').find({id:12}).limit(10).sort({readtime:-1}}) # 降序查询10条
  • 多条件查询

# 使用and关键字
db.getCollection('表名').find( {$and: [ {字段1:'值1'} ,{字段2:'值2'} ... ] } )
例如:
db.getCollection('assets_info_test1009').find( {$and: [ {facilitiess:'民塘路-留仙大道交叉口'} ,{feature_type:"TS_BLINDWAY"} ] } )

# 不使用关键字语法
db.getCollection('表名').find({字段1:"值1",字段2:'值2'})
例如:
db.getCollection('assets_info_test1009').find({feature_type:"TS_BLINDWAY",facilitiess:'民塘路-留仙大道交叉口'})
  • 选择日期查询

db.getCollection('gps_obd_202305').find(
{$and: [{"upload_time": {
$gte: new ISODate("2023-05-09T00:00:00Z"),
$lt: new ISODate("2023-05-10T00:00:00Z")}}, 
{"sim_no": "58054672297"}, 
{"longitude": 0}}
)
  • 模糊查询

-- SQL:
SELECT * FROM UserInfo WHERE userName LIKE "%A%"

-- MongoDB:
db.UserInfo.find({userName: /A/})