携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第13天,点击查看活动详情
⭐️前面的话⭐️
✉️坚持和努力一定能换来诗与远方!
💭推荐书籍:📚《王道408》,📚《深入理解 Java 虚拟机-周志明》,📚《Java 核心技术卷》
💬算法刷题:✅力扣🌐牛客网
🎈Github
🎈码云Gitee
1 概念、应用场景
- 维基百科
MongoDB是一个基于分布式文件存储的数据库。由
C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。 MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的 bson 格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。
-
实际应用案例
- (1)游戏场景 使用MongoDB存储游戏用户信息、装备、积分等,直接以内嵌文档的形式存储,方便查询、更新。
- (2)物流场景 使用MongoDB存储订单信息、订单状态、物流信息,订单状态在运送过程中飞速迭代、以MongoDB内嵌数组的形式来存储,一次查询就能将订单所有的变更查出来,牛逼plus。
- (3)社交场景 使用MongoDB存储用户信息,朋友圈信息,通过地理位置索引实现附近的人、定位功能。
- (4)物联网场景 使用MongoDB存储设备信息、设备汇报的日志信息、并对这些信息进行多维度分析。
- (5)视频直播 使用MongoDB存储用户信息、点赞互动信息。
-
场景总结
- 数据量大
- 读写操作频繁
- 数据价值较低,对事务要求不高
2 数据模型
- 对比MySQL
| MySQL | Mongodb | 说明 |
|---|---|---|
| database | database | 数据库 |
| table | collection | 表/集合 |
| row | document | 行/文档 |
| comlumn | field | 字段/域 |
| index | index | 索引 |
| join | 嵌入文档 | 表关联 /Mongodb 不支持join,Mongodb通过嵌入式文档来替代多表连接 |
| primary key | primary key | 主键 /Mongodb 自动将 _id 字段设置为主键 |
-
BSON
- MongoDB的最小存储单位是文档(document)对象,相当于MySQL中的行,数据以BSON文档的形式存储在磁盘上。
- BSON是一种二进制形式的存储格式,简称Binary JSON。 BSON和JSON一样,支持内嵌的文档对象和数组对象,但是BSON有JSON没有的一些数据类型,如
Date和BinData类型。 - BSON采用了类似于C语言结构体的名称、支持内嵌的文档对象和数组对象,具有轻量级、可遍历性、高效性三大特点,可以有效描述非结构化数据和结构化数据,灵活性高,但空间利用率不是很理想。
-
数据类型
| 数据类型 | 描述 | 举例说明 |
|---|---|---|
| 字符串 | {"学校":"四川大学"} | |
| 对象 id | 对象 id是文档的唯一id | {"name":ObjectId()} |
| 布尔值 | true or false | {"name":true} |
| 数组 | {"name":["张三","李四","王五"]} | |
| 64位浮点数 | {"x":1.23567,"y":100} | |
| null | 表示空 | {"name":null} |
| undefined | 文档中可以使用未定义类型 | {"name":undefined} |
| 符号 | 会自动转为字符串 | |
| 正则表达式 | 文档中可以用 JavaScript正的则表达式语法 | {"name": /foobar/i} |
| 代码 | 文档中可以包含 JavaScript 代码 | |
| 二进制数据 | 由任意字符的串组成,不过shell中无法使用 | |
| 最大值/最小值 | BSON 包含一个特殊类型,表示可能的最大值,shell 中没有这个类型 |
3 安装、运行
-
windows
- 下载 msi 文件、安装:www.mongodb.com/try/downloa…
- 创建3个文件夹:/data、/log、/data/log/
- 服务端启动
C:\Program Files\MongoDB\Server\5.0\bin> mongod --dbpath C:\enviroment\mongodb\data\db- 客户端启动
C:\Program Files\MongoDB\Server\5.0\bin> mongo- 配置环境变量
- 可视化客户端——Robo 3T、Navicat、compass
下载地址(msi文件):https://www.mongodb.com/try/download/compass -
macos
4 文档基本操作
5 与SpringBoot整合
- 坐标
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
spring:
data:
mongodb:
uri: mongodb://localhost/itheima