安装mongodb
去[mongodb官网](https://www.mongodb.com/)下载安装包,因为mongodb官网经常在更新,不同时间,网站不太一样,所以只给出官网地址,具体怎么下载,请到官网查看。
安装包就跟我们平时下载的其他软件一样,找到存放位置,双击即可开始安装。在安装过程中,有一个安装选项,建议新手选择custom,然后选择一个安装文件夹,我选择的是D:\Program Files\,这个根据自己的喜好自己选择,其他的默认就行,直到安装完成。
安装完成后,记得在C盘里面创建一个data的文件夹,再到data里面创建一个db文件夹和log文件夹。然后为mongodb添加环境变量,具体方法:找到安装文件下的bin目录,我的是D:\Program Files\mongodb\Server\4.0\bin,把它添加到系统变量里即可。各种电脑添加环境变量的方式不太一样,我就不一一列举了,不会的可以自行百度。
数据库基本操作
连接mongodb
1. 打开一个cmd窗口,输入mongod,如果最后显示一个on port xxxx,表示连接成功
2. 重新打开一个cmd窗口,输入mongo命令来连接服务端
连接成功后,我们就可以进行简单的数据库操作了
简单操作数据库
在输入了mongo命令后,我们就已经进入了mongo shell,也就是 mongodb 自己的命令行工具,我们就可以执行一些它的专属命令了
show dbs :显示已有数据库,如果你刚安装好,会默认有local、admin(config),这是MongoDB的默认数据库,我们在新建库时是不允许起这些名称的。
use admin: 进入数据库,也可以理解成为使用数据库。成功会显示:switched to db admin。这里的admin是指数据库名称。use 不仅可以进入一个数据库,如果你敲入的库不存在,它还可以帮你建立一个库。但是在没有集合前,它还是默认为空。
show collections: 显示数据库中的集合(关系型中叫表,我们要逐渐熟悉)。
db: 显示当前位置,也就是你当前使用的数据库名称,这个命令算是最常用的,因为你在作任何操作的时候都要先查看一下自己所在的库,以免造成操作错误。
mongo shell 还可以运行简单的js命令
1 2 |
var x = 'Hello World' print(x) |
执行上面代码会打印出 Hello World。
需要注意的是这里的输出不再使用console.log(),而是使用print(),这个稍有区别
还可以定义函数:
1 2 3 4 5 |
function diyfn(){ return 'diyStr'; } var x = diyfn() print(x) |
执行上面代码会打印出 diyStr
mongodb常用命令
db.集合名.insert(obj):新建数据集合和插入文件(数据),当集合没有时,这时候就可以新建一个集合,并向里边插入数据。
1 |
db.user.insert({"name":"lilaobiao"}) |
db.集合名.find():查询所有数据,这条命令会列出集合下的所有数据,可以看到MongoDB是自动给我们加入了索引值的。
1 |
db.user.find() |
db.集合名.findOne(obj):查询一个文件数据,这里需要注意的,所有MongoDB的组合单词都使用首字母小写的驼峰式写法。
db.集合名.update({查询},{修改}):修改文件数据,第一个是查询条件,第二个是要修改成的值。
注意:这里是可以多加文件数据项的,比如:
1 |
db.testtable.update({name:"李贵兴"},{name:"李贵兴",age:20}) // 多了字段age |
还有一点,如果要修改成的值没有包含已有的字段,则除了_id,没有的字段将被删除,update等于是用新的数据替换掉满足条件的数据,比如
1 |
db.testtable.update({name:"李贵兴"},{age:20}) //所有name="李贵兴"的数据只剩下了age字段 |
db.集合名.drop():删除集合
例:
1 2 3 4 5 6 7 8 9 10 |
use test //切换到test数据库,如果没有test数据库会创建改数据库 switched to db test show collections //显示集合 testtable //有一个叫testtable的表,但并未定义有几个字段 db.testtable.insert({name:'李贵兴'}) //插入数据 db.testtable.find({name:"李贵兴"}) db.testtable.insert({name:"李贵兴",age:20}) // 除了id,插入的有几个字段生成几个字段 db.testtable.update({age:20},{sex:1}) // 除了id,可以随便定义字段,执行命令后,name和age字段没了,有了sex字段, db.testtable.remove({name:"李贵兴"}) db.testtable.drop() |
数据库管理
安装好MongoDB时,它为我们默认开了一个最高管理权限方便我们管理数据库,我们可以用mongo连接数据库,就是这个原理。
首先要进入我们的admin库中,进入方法是直接使用 use admin 就可以。进入后可以使用 show collections 来查看数据库中的集合,默认是只有一个集合的(system.version)。
通过 db.system.users.find() 查找,发现一个用户也没有
#### 创建用户
可以用db.createUser方法来完成,里边除了user和pwd字段,其他参数可以自己定义。
1 2 3 4 5 6 7 8 9 10 |
db.createUser({ user:"liguixing", // 用户名 pwd:"123456", // 密码 customData:{ // 自定义一些你的个人信息 name:'custom', email:'web0432@126.com', age:18, }, roles:['read'] // 角色,相当于分配用户权限 }) |
重点说一下mongodb的角色,它里面有很多内置角色,不同角色有不同权限,具体对比如下:
数据库用户角色:read、readWrite;
数据库管理角色:dbAdmin、dbOwner、userAdmin;
集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManage;
备份恢复角色:backup、restore;
所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
超级用户角色:root
内部角色:__system
通过数据库管理工具(或者 show collections 命令)可以看到,admin 数据库多了一个 system.users 的表,再次查询
1 |
db.system.users.find() |
会返回一个用户,就是刚才创建的。
注意:除了_id,还有一个id的字段,值为admin.liguixing。
当然我们还可以单独配置一个数据库的权限,比如我们现在要配置compay数据库的权限为读写:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
db.createUser({ user:"liguixing2", pwd:"123456", customData:{ name:'liguixing2', email:'web0432@126.com', age:18, }, roles:[ { role:"readWrite", db:"company" }, 'read' ] }) |
再次创建一个liguixing2的用户,会报错,因为数据库的用户名具有唯一性
1 2 3 4 5 6 7 8 9 10 11 |
db.createUser({ user:"liguixing2", pwd:"123456", roles:[ { role:"readWrite", db:"company" }, 'read' ] }) |
#### 删除用户
1 2 |
db.system.users.remove({user:"liguixing2"}) db.system.users.remove({user:"liguixing3"}) |
### mongo执行js文件
在任何文件夹创建一个js文件都可以,然后在该js文件所在的文件夹目录打开cmd,执行mongo xxx.js 即可
发表评论