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/})