MongoDB
关系型和非关系型数据库
关系型数据库(表就是关系,或者说表与表之间存在关系)。
- 所有的关系型数据库都需要通过
sql
语言来操作 - 所有的关系型数据库在操作之前都需要设计表结构
- 而且数据表还支持约束
- 唯一的
- 主键
- 默认值
- 非空
非关系型数据库
- 非关系型数据库非常的灵活
- 有的关系型数据库就是key-value对儿
- 但MongDB是长得最像关系型数据库的非关系型数据库
- 数据库 -》 数据库
- 数据表 -》 集合(数组)
- 表记录 -》文档对象
一个数据库中可以有多个数据库,一个数据库中可以有多个集合(数组),一个集合中可以有多个文档(表记录)
代码语言:javascript复制{
qq:{
user:[
{},{},{}...
]
}
}
- 也就是说你可以任意的往里面存数据,没有结构性这么一说
安装
- 下载
- 下载地址:https://www.mongodb.com/download-center/community
- 安装
npm i mongoose
- 配置环境变量
- 最后输入
mongod --version
测试是否安装成功
启动和关闭数据库
启动:
代码语言:shell复制# mongodb 默认使用执行mongod 命令所处盼复根目录下的/data/db作为自己的数据存储目录
# 所以在第一次执行该命令之前先自己手动新建一个 /data/db
mongod
如果想要修改默认的数据存储目录,可以:
代码语言:javascript复制mongod --dbpath = 数据存储目录路径
停止:
代码语言:javascript复制在开启服务的控制台,直接Ctrl C;
或者直接关闭开启服务的控制台。
连接数据库
连接:
代码语言:javascript复制# 该命令默认连接本机的 MongoDB 服务
mongo
退出:
代码语言:javascript复制# 在连接状态输入 exit 退出连接
exit
基本命令
show dbs
- 查看数据库列表(数据库中的所有数据库)
db
- 查看当前连接的数据库
use 数据库名称
- 切换到指定的数据库,(如果没有会新建)
show collections
- 查看当前目录下的所有数据表
db.表名.find()
- 查看表中的详细信息总结与思考
- 数据模型:MongoDB 数据库采用文档存储方式,每个文档都是一个键值对的集合,其中键是字符串,值可以是多种类型的数据,例如字符串、数值、数组、嵌套文档等。这种数据模型比传统的关系型数据库更灵活,可以更好地适应非结构化的数据。
- 扩展性:MongoDB 支持水平扩展,可以通过添加更多的节点来扩展数据库的处理能力。在分布式系统中,这是一个非常重要的特性,可以保证系统的高可用性和高性能。
- 查询语言:MongoDB 支持类似 SQL 的查询语言,称为 MongoDB 查询语言(MQL),可以进行复杂的查询操作。同时,MongoDB 还支持 MapReduce 和聚合框架,这些功能可以用来进行更复杂的数据处理和分析。
- 高可用性:MongoDB 支持副本集(Replica Set)功能,可以保证数据的高可用性。副本集是多个 MongoDB 实例的集合,其中一个实例作为主节点,其他实例作为副本节点,主节点负责处理所有的写操作,副本节点则用来复制主节点的数据。当主节点故障时,副本节点可以自动选举出一个新的主节点,保证系统的高可用性。
- 缺点:MongoDB 的缺点之一是数据一致性问题,因为副本集需要时间来同步数据,所以在某些情况下可能会导致数据不一致。另外,MongoDB 也不适合用于需要多表联合查询的场景,因为 MongoDB 的数据模型不支持多表联合查询。
总的来说,MongoDB 是一款非常适合处理非结构化数据的 NoSQL 数据库,它具有高扩展性、高可用性和灵活的数据模型等优点,但也存在一些缺点需要注意。在选择数据库时,应该根据实际的业务需求和数据类型来进行选择。
我正在参与2023腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!