【Spring开发】SpringCloud交友项目实战第9篇:2. MongoDB简介,3. MongoDB入门【附代码文档】

53 阅读1分钟

🏆🏆🏆教程全知识点简介:1、Dubbo的前世今生 1、项目介绍 1.1、项目背景 1.2、市场分析 1.3、目标用户群体 1.4、使用场景 1.5、竞争对手分析 1.7、技术方案 2、前后端分离开发思想 3、开发工具与环境搭建 3.1、开发工具 3.2、环境搭建 4、sms_code验证玛 4.1 阿里云短信 4.2 自动装配 1. 完善用户信息 1.2 百度人脸识别 1.2.1 概述 1.2.2 账号申请 1.2.4 抽取模板工具 2.2 更新用户资料 2.2.1 接口文档 2.2.2 代码实现 3. 统一token处理 3.1.需求分析 3.2 解决方案 拦截器(Interceptor) ThreadLocal MongoDB入门 数据库以及表的操作 新增数据 更新数据 删除数据 查询数据 1.3 设置陌生人问题 1.4 通知设置 1.5 黑名单管理 4. SpringData-Mongo 4.2 完成基本操作 5. 今日佳人 5.1 表结构设计 5.2 服务提供者 5.2.0 导入依赖 5.2.2 RecommendUserApi接口 分片集群 原理介绍 集群搭建 2、圈子功能 2.1、功能说明 3、圈子实现 3.2、发布动态 1. 动态查询 1.1 查询好友动态 2. 圈子互动 2.3 动态点赞 2.4.3 喜欢标识 安装 准备 使用 1. 即时通信 2. 环信 2.1 开发简介 2.2 环信Console 2.3 环信API介绍 初始化 基础API 3. 抽取环信组件 3.1 编写Properties对象 3.2 编写HuanXinTemplate 3.3 编写自动配置类 2. MongoDB地理位置检索 2.1 地理位置索引 Point LineString Polygon 2.2 案例 3. 上报地理位置 4. 搜附近 1. 我的访客 1.2 记录访客数据 tanhua-model tanhua-app-server tanhua-dubbo-interface 1.3 首页谁看过我 需求分析 3. FastDFS 3.2. 工作原理 3.2.1. 文件的上传 分布式文件系统FDFS配置 4. 发布小视频 1、用户冻结解冻 1.1 用户冻结 1.3 查询数据列表 1.4 明日系统修改 2.2 定时任务 3、内容审核 1、了解推荐系统 1.1、什么是推荐系统? 1.3、推荐系统业务流程 1.4、协同过滤推荐算法 1.5、ALS算法 2、好友推荐 2.1、流程 2.2、部署好友推荐服务


📚📚👉👉👉本站这篇博客:   juejin.cn/post/754643…    中查看

📚📚👉👉👉本站这篇博客:   juejin.cn/post/754643…    中查看

✨ 本教程项目亮点

🧠 知识体系完整:覆盖从基础原理、核心方法到高阶应用的全流程内容
💻 全技术链覆盖:完整前后端技术栈,涵盖开发必备技能
🚀 从零到实战:适合 0 基础入门到提升,循序渐进掌握核心能力
📚 丰富文档与代码示例:涵盖多种场景,可运行、可复用
🛠 工作与学习双参考:不仅适合系统化学习,更可作为日常开发中的查阅手册
🧩 模块化知识结构:按知识点分章节,便于快速定位和复习
📈 长期可用的技术积累:不止一次学习,而是能伴随工作与项目长期参考


🎯🎯🎯全教程总章节


🚀🚀🚀本篇主要内容

2. MongoDB简介

对于社某交类软件的功能, 需要对它的功能特点做分析:

  • 数据量会随着用户数增大而增大
  • 读多写少
  • 价值较低
  • 非好友看不到其动态内容
  • 地理位置的查询
  • ……

针对以上特点, 来分析一下:

  • mysql:关系型数据库(效率低)
  • redis:redis缓存(微博,效率高,数据格式不丰富)
  • 对于数据量大而言,显然不能够使用关系型数据库进行存储, 需要通过MongoDB进行存储
  • 对于读多写少的应用,需要减少读取的成本
    • 比如说,一条SQL语句,单张表查询一定比多张表查询要快

明日交友

  • mongodb:存储业务数据(圈子,推荐的数据,小视频数据,点赞,评论等)
  • redis:承担的角色是缓存层(提升查询效率)
  • mysql:存储和核心业务数据,账户

2.1 MongoDB简介

MongoDB:是一个高效的非关系型数据库(不支持表关系:只能操作单表)

MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。

MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的,它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。

MongoDB最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

官网:www.mongodb.com

2.2 MongoDB的特点

MongoDB 最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。它是一个面向集合的,模式自由的文档型数据库。具体特点总结如下:

  1. 面向集合存储,易于存储对象类型的数据
  2. 模式自由
  3. 支持动态查询
  4. 支持完全索引,包含内部对象
  5. 支持复制和故障恢复
  6. 使用高效的二进制数据存储,包括大型对象(如视频等)
  7. 自动处理碎片,以支持云计算层次的扩展性
  8. 支持 Python,PHP,Ruby,Java,C,C#,Javascript,Perl及C++语言的驱动程 序, 社区中也提供了对Erlang及.NET 等平台的驱动程序
  9. 文件存储格式为 BSON(一种 JSON 的扩展)

MYSQL : 用于存储安全性要求比较高的数据

REDIS : 存储数据格式简单 , 并且查询非常多的数据(用户缓存)

MONGDB : 用户存储海量数据, 并且数据的安全性要求不高

2.2.1 通过docker安装MongoDB

在资料的虚拟机中已经提供了MongoDB的镜像和容器, 只需要使用简单的命令即可启动

#进入base目录

[SonarQube Java 规则](https://rules.sonarsource.com/java/)

cd /root/docker-file/base/
#批量创建启动容器,其中已经包含了redis,zookeeper,mongodb容器
docker-compose up -d
#查看容器
docker ps -a

可以看到mongoDB已经启动,对外暴露了27017的操作端口

2.2.2 MongoDB体系结构

Disruptor 文档

MongoDB 的逻辑结构是一种层次结构。主要由: 文档(document) 集合(collection) 数据库(database)这三部分组成的。逻辑结构是面 向用户的,用户使用 MongoDB 开发应用程序使用的就是逻辑结构。

  1. MongoDB 的文档(document),相当于关系数据库中的一行记录。
  2. 多个文档组成一个集合(collection),相当于关系数据库的表。
  3. 多个集合(collection),逻辑上组织在一起,就是数据库(database)。
  4. 一个 MongoDB 实例支持多个数据库(database)。 文档(document) 集合(collection) 数据库(database)的层次结构如下图:

为了更好的理解,下面与SQL中的概念进行对比:

SQL术语/概念MongoDB术语/概念解释/说明
databasedatabase数据库
tablecollection数据库表/集合
rowdocument表中的一条数据
columnfield数据字段/域
indexindex索引

JDK 11 API 文档

| table joins | | 表连接,MongoDB不支持 | | primary key | primary key | 主键,MongoDB自动将_id字段设置为主键 |

2.3 数据类型

  • 数据格式:BSON {aa:bb}
  • null:用于表示空值或者不存在的字段,{“x”:null}
  • 布尔型:布尔类型有两个值true和false,{“x”:true}
  • 数值:shell默认使用64为浮点型数