关系型数据库和非关系型数据库
- MySQL Oracle SqlServer 用一种关系模型来组织数据的数据库(查询方便,不方便拓展)
- nosql mongo redis memcached (不同于传统的关系数据库)
mongo 特点
- 分布式:文档类型,值就是传统对象类型
key=>value
BSON,储存复杂结构的数据 - 性能高:不需要通过 SQL 层来进行解析(分析的过程 操作的过程 浪费性能),数据之间没有耦合,可以方便拓展,不适合复杂查询
mongo 的安装方式
https://www.mongodb.com/try/download/community
选择自己的版本
我参考的是这篇文章安装的:MongoDB下载安装教程
启动 mongodb
手动启动:自己启动服务端,并且指向路径储存的路径,然后启动客户端,需配置环境变量
mongod --dbpath="D:\Program Files\MongoDB\Server\4.4\data" mongo
或者启动 MongoDB,再双击 mongo.exe
可执行文件的路径
"D:\Program Files\MongoDB\Server\4.4\bin\mongod.exe" --config "D:\Program Files\MongoDB\Server\4.4\bin\mongod.cfg" --service
cfg 配置文件 D:\Program Files\MongoDB\Server\4.4\bin\mongod.cfg
如下:
在浏览器访问:http://127.0.0.1:27017
出现如下页面证明 mongoDb 启动成功。
mongo 的语句
显示所有的数据库(默认免密码)
show dbs
如果数据库不存在,则创建数据库,否则切换到指定数据库。
use DATABASE_NAME
如果要查看已有集合,可以使用下面两个命令:
show collections show tables
我们创建数据库kaimo,往集合 kaimo 里插入两条数据
use kaimo db.kaimo.insertOne({"name":"凯小默1"}) db.kaimo.insertOne({"name":"凯小默2"})
查询
db.kaimo.find({}) db.kaimo.find({"name": "凯小默1"})
删除
db.kaimo.deleteOne({"name": "凯小默2"})
下面创建根用户,在创建一个数据库分配这个数据库的权限,默认可以在 admin 中创建根用户,创建其他数据库,在针对某个数据库中,创建用户,赋予当前权限,下次链接这个数据库时可以登录这个账号。
use admin db.createUser({user: "root", pwd: "root", roles: ["root"]})
创建一个 user 库,给集合 student 添加两条数据
use user db.student.insert({name:"凯小默", age: 313}) db.student.insert({name:"凯小默2", age: 3})
ObjectId 的构成
ObjectId 是一个 12 字节的 BSON 类型字符串,按照字节顺序,依次代表:
- 4 字节:UNIX 时间戳
- 3 字节:表示运行 MongoDB 的机器
- 2 字节:表示生成此 _id 的进程
- 3 字节:由一个随机数开始的计数器生成的值
ObjectId("65279b292d3834025d88a1b9")
MongoDB 开启安全认证,首先使用配置文件,增加参数:
security: authorization: enabled
在重新启动,执行 show dbs
发现看不到数据库了
以用户管理员身份进行连接和验证
use admin db.auth("root", "root") show dbs
再创建一个用户 kaimo313 去管理用户表,可读可写
use user db.createUser({user: "kaimo313", pwd: "kaimo313", roles: [{role: "readWrite", db: "user"}]})
重启服务,访问 user 库里的所有集合,会提示:Warning: unable to run listCollections, attempting to approximate collection names by parsing connectionStatus
use user show collections
上面的原因是因为连着的 MongoDB 中的 user 数据库它是有用户名和密码的,在没有进行登录的情况下,想直接查看数据库集合名称时,遭到了拒绝,因此,首先要进行登录操作,获得查看 collections 的权限。
db.auth("kaimo313", "kaimo313") show collections
mysql | mongo |
库 | 库 |
表 | 集合 |
行和列 | BSON |
Robo 3T
我参考的是这篇:【Robo 3T】MongoDB可视化工具-- Robo 3T使用教程
点击【Create】,选择【Connection】输入需要连接的服务端【地址】和【端口】
配置权限
双击或者链接
配置user表权限