mongodb常用指令
PS:本笔记的测试数据库为 spa 数据库
♥管理员账号:admin
♥管理员密码:shipingan0818
♥在cmd中连接mongodb数据库:mongo admin -u admin -p shipingan0818
♥在navcat中建立连接:使用password验证
账户管理
mongodb数据库所有角色
1.数据库用户角色:read、readWrite;
2数据库管理角色:dbAdmin、dbOwner、userAdmin
3.集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
4.备份恢复角色: backup、 restore;
5.所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatebase、dbAdminAnyDatabase
6.超级用户角色。root(权限最高的存在)
提示:root为最高权限数据库,root权限的账号需在系统自带的admin数据库中创建,而dbOwner为对单个数据库有最高权限的账号,需进入其对应数据库创建账号
1.创建超级管理员
use admin
db.createUser({
user:"admin",
pwd:"shipingan0818",
roles:[{role:"root",db:"admin"}]
})
2.修改mongodb安装目录的bin目录下的mongod.cfg配置文件
-
如果要开启远程连接,需要配置为如下信息,注意:在centos服务器中,配置如下信息会报错,具体错误可以到时候再百度
net: #端口号 port: 27017 #ip地址 bindIp: 0.0.0.0
-
# 开启安全认证: security: authorization: enabled
-
db.createUser({ user: 'admin', // 用户名 pwd: 'shipingan0818', // 密码 roles:[{ role: 'root', // 角色权限级别 db: 'admin' // 要管理的数据库 }] })
3.重启mongodb的服务
打开管理器,找到mongodb服务,右键点击重启
4.重新连接数据库
-
在cmd中连接mongodb数据库:mongo admin -u admin -p shipingan0818
-
在navcat中建立连接:使用password验证
-
在项目中的mongoose中:
mongoose.connect('mongodb://admin:shipingan0818@192.168.43.169:27017/wxnews?authSource=admin',{ auto_reconnect: true, useUnifiedTopology: true, useNewUrlParser: true },function (err) { if(err){ console.log('数据库连接失败!'); console.log(err); return; }else{ console.log('数据库连接成功!'); } });
1.创建只对某一个数据库,有所有权限的账号
先进入需要被管理的数据库(比如这个账号要管理eggcms数据库,则需执行 use eggcms 进入数据库)
use eggcms
db.createUser({
user: 'bosszhiju', // 用户名
pwd: '123456', // 密码
roles:[{ //权限配置
role: 'dbOwner', // 角色的权限级别
db: 'bosszhiju' // 要管理的数据库
}]
})
2.使用新创建的账号登录就可以了
mongo eggcms -u eggcms -p 123456
删除用户
db.dropUser(“用户名”)
修改用户密码
db.updateUser(“用户名”,{pwd:“新密码”});
数据库基本操作
0.连接数据库命令: mongo 要操作的数据库名 -u 登录用户名 -p 登录密码
-
use {数据库名} = 创建或者进入一个数据库,注意如果创建数据库,则必须插入一条数据才能成功创建,否则无效
-
show dbs = 显示所有的数据库
-
db.dropDatabase() = 删除当前所在的(就是打开的嘛)数据库
-
db.{集合名}.insert({“name”:“zhangsan”}) = 向集合当中插入一条数据
-
show collections = 显示当前数据库下的所有集合
-
db.{集合名/表名}.drop() = 删除某一个集合
查(find)
普通查询
再普通不过了
- db.{集合名}.find() = 查找某个集合下的所有数据,你为啥知道是所有数据?因为它没传入条件啊
- db.{集合名}.find({“username”:“张三”,“age”:18}) = 查找 username为张三 并且 age为18 的数据
条件查询
在某个区间查找:
-
g t : 大 于 , gt:大于, gt:大于,lt:小于
-
g t e : 大 于 等 于 , gte:大于等于, gte:大于等于,lte:小于等于
-
{ g t e :