「这是我参与2022首次更文挑战的第4天,活动详情查看:2022首次更文挑战」。
一.mongoDB简介
-
源自于英文单词"Humongous",中文译为庞大的
-
面向文档存储的开源数据库
-
由C++编写而成
-
优势:
-
性能好(内存计算)
-
支持大规模的数据存储(可拓展性)
-
可靠安全(本地复制,自动故障转移)
-
方便存储复杂的数据结构(Scheme Free)
-
-
mongoDB是一种NoSQL
二.NoSQL
-
对不同于传统的关系型数据库的统称
-
分类:
- 列存储(HBase)
- 文档存储(MongoDB)
- key-value存储(Redis)
- 图存储(FlockDB)
- 对象存储(db4o)
- XML存储(BaseX)
-
优势:
- 简单(没有原子性,一致性,隔离性等复杂规范)
- 便于横向拓展,很容易的增加服务器的数量来增加计算能力。纵向拓展是指增加内存增加硬盘。因为非常简单,没有复杂的规范,而传统的数据库很很多规范,在大量服务器上遵循这些规范进行通信是非常复杂的。
- 适合超大规模数据存储
- 很灵活的存储复杂结构的数据(Scheme Free)
三.docker部署
-
docker search mongo 查询mongo的镜像
-
docker image pull mongo 拉取最新的mongo镜像
-
docker container run -itd --name mongo -p 27017:27017 mongo --auth // 启动一个容器,-d持续化执行,-p映射端口号,--auth需要密码才能访问容器服务
-
docker container ls //查看是否存在容器
-
docker exec -it mongo mongo admin // 尝试连接
-
db.createUser({ user:'admin',pwd:'password',roles:[ { role:'userAdminAnyDatabase', db: 'admin'},"readWriteAnyDatabase"]}); // 创建一个用户
- db.auth('admin', 'Rzh.971124') // 用刚刚创建的用户进行连接
四.koa链接数据库
- 安装Mongoose:npm i monoose --save
- 用Mongoose进行连接
const mongoose = require('mongoose')
const option = {
useNewUrlParser:true
}
mongoose.connect(connectStr,option,()=>{
console.log("mongoDB链接成功了")
})
mongoose.connection.on('error',console.error)
五.遇到的问题:
1.MongoDB shell version v5.0.3
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
Error: couldn't connect to server 127.0.0.1:27017, connection attempt failed: SocketException: Error connecting to 127.0.0.1:27017 :: caused by :: Connection refused :
connect@src/mongo/shell/mongo.js:372:17
@(connect):2:6
exception: connect failed
exiting with code 1