MongoDB

95 阅读4分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 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
MySQLMongodb说明
databasedatabase数据库
tablecollection表/集合
rowdocument行/文档
comlumnfield字段/域
indexindex索引
join嵌入文档表关联 /Mongodb 不支持join,Mongodb通过嵌入式文档来替代多表连接
primary keyprimary key主键 /Mongodb 自动将 _id 字段设置为主键
  • BSON

    • MongoDB的最小存储单位是文档(document)对象,相当于MySQL中的,数据以BSON文档的形式存储在磁盘上。
    • BSON是一种二进制形式的存储格式,简称Binary JSON。 BSON和JSON一样,支持内嵌的文档对象和数组对象,但是BSON有JSON没有的一些数据类型,如 DateBinData 类型。
    • 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

    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

参考