【Spring开发】SpringCloud交友项目实战第7篇:MongoDB入门【附代码文档】

举报
小帅说java 发表于 2025/09/08 17:43:51 2025/09/08
【摘要】 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、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、部署好友推荐服务


📚📚👉👉👉本站这篇博客:   https://bbs.huaweicloud.com/blogs/460078    中查看

📚📚👉👉👉本站这篇博客:   https://bbs.huaweicloud.com/blogs/459652    中查看

📚📚👉👉👉本站这篇博客:   https://bbs.huaweicloud.com/blogs/459838    中查看

✨ 本教程项目亮点

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


🎯🎯🎯全教程总章节


🚀🚀🚀本篇主要内容

MongoDB入门

数据库以及表的操作

#查看所有的数据库
> show dbs

#通过use关键字切换数据库
> use admin

#创建数据库
#说明:在MongoDB中,数据库是自动创建的,通过use切换到新数据库中,进行插入数据即可自动创建数据库
> use testdb

> show dbs #并没有创建数据库

> db.user.insert({id:1,name:'zhangsan'})  #插入数据

> show dbs

#查看表
> show tables

> show collections

#删除集合(表)
> db.user.drop()
true  #如果成功删除选定集合,则 drop() 方法返回 true,否则返回 false。

#删除数据库
> use testdb #先切换到要删除的数据中

> db.dropDatabase()  #删除数据库

新增数据

在MongoDB中,存储的文档结构是一种类似于json的结构,称之为bson(全称为:Binary JSON)。

#插入数据
#语法:db.表名.insert(json字符串)

> db.user.insert({id:1,username:'zhangsan',age:20})


> db.user.find()  #查询数据

更新数据

update() 方法用于更新已存在的文档。语法格式如下:

db.collection.update(
   <query>,
   <update>,
   [
     upsert: <boolean>,
     multi: <boolean>,
     writeConcern: <document>
   ]
)

参数说明:

  • query : update的查询条件,类似sql update查询内where后面的。
  • update : update的对象和一些更新的操作符(如inc.$set)等,也可以理解为sql update查询内set后面的
  • upsert : 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
  • multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。
  • writeConcern :可选,抛出异常的级别。
#查询全部
> db.user.find()

#更新数据
> db.user.update({id:1},{$set:{age:22}}) 

#注意:如果这样写,会删除掉其他的字段
> db.user.update({id:1},{age:25})

#更新不存在的字段,会新增字段
> db.user.update({id:2},{$set:{sex:1}}) #更新数据

#更新不存在的数据,默认不会新增数据
> db.user.update({id:3},{$set:{sex:1}})

#如果设置第一个参数为true,就是新增数据
> db.user.update({id:3},{$set:{sex:1}},true)

删除数据

通过remove()方法进行删除数据,语法如下:

[Asciidoctor 文档]

db.collection.remove(
   <query>,
   {
     justOne: <boolean>,
     writeConcern: <document>
   }
)

参数说明:

  • query :(可选)删除的文档的条件。
  • justOne : (可选)如果设为 true 或 1,则只删除一个文档,如果不设置该参数,或使用默认值 false,则删除所有匹配条件的文档。
  • writeConcern :(可选)抛出异常的级别。

实例:

#删除数据
> db.user.remove({})

#插入4条测试数据
db.user.insert({id:1,username:'zhangsan',age:20})
db.user.insert({id:2,username:'lisi',age:21})
db.user.insert({id:3,username:'wangwu',age:22})
db.user.insert({id:4,username:'zhaoliu',age:22})

> db.user.remove({age:22},true)

#删除所有数据
> db.user.remove({})

查询数据

MongoDB 查询数据的语法格式如下:

db.user.find([query],[fields])
  • query :可选,使用查询操作符指定查询条件
  • fields :可选,使用投影操作符指定返回的键。查询时返回文档中所有键值, 只需省略该参数即可(默认省略)。

条件查询:

操作 格式 范例 RDBMS中的类似语句
等于 {<key>:<value>} db.col.find({"by":"黑马程序员"}).pretty() where by = '黑马程序员'
小于 {<key>:{$lt:<value>}} db.col.find({"likes":{$lt:50}}).pretty() where likes < 50
小于或等于 {<key>:{$lte:<value>}} db.col.find({"likes":{$lte:50}}).pretty() where likes <= 50
大于 {<key>:{$gt:<value>}} db.col.find({"likes":{$gt:50}}).pretty() where likes > 50
大于或等于 {<key>:{$gte:<value>}} db.col.find({"likes":{$gte:50}}).pretty() where likes >= 50
不等于 {<key>:{$ne:<value>}} db.col.find({"likes":{$ne:50}}).pretty() where likes != 50

实例:

#插入测试数据
db.user.insert({id:1,username:'zhangs

# 介绍

- MongoDB环境搭建
- MongoDB基本CRUD操作
- 通过JavaApi操作MongoDB
- SpringBoot整合MongoDB


# 1. 通用设置

## 1.1 需求分析

### 1.1.1 需求分析

通用设置,包含明日交友APP基本的软件设置功能。包含:

设置陌生人问题:当平台其他用户想进行在线交流时需要回答陌生人问题。

通用设置:包含一些APP通知设置

黑名单:对于不感兴趣的用户设置黑名单屏蔽骚扰

![](https://fileserver.developer.huaweicloud.com/FileServer/getFile/communitytemp/20250908/community/586/961/417/0001711010586961417.20250908094337.01595579300382158942801956430460:20250908104337:2415:50C9141DB531C0819C34B3CD9938012723A7CE6991713868F989757D288FDEC7.png)

![](https://fileserver.developer.huaweicloud.com/FileServer/getFile/communitytemp/20250908/community/586/961/417/0001711010586961417.20250908094338.00734053885419320804066339189211:20250908104339:2415:AE064F675B06D0A3E958B9F0112A3636F6D8B9E3B2698035D741F467F2DBB845.png)

### 1.1.2 数据库表

**通用设置**
```sql

[JConsole 文档]

CREATE TABLE `tb_settings` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `user_id` bigint(20) DEFAULT NULL,
  `like_notification` tinyint(4) DEFAULT '1' COMMENT '推送喜欢通知',
  `pinglun_notification` tinyint(4) DEFAULT '1' COMMENT '推送评论通知',
  `gonggao_notification` tinyint(4) DEFAULT '1' COMMENT '推送公告通知',
  `created` datetime DEFAULT NULL,
  `updated` datetime DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='设置表';

问题表

CREATE TABLE `tb_question` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `user_id` bigint(20) DEFAULT NULL COMMENT '用户id',
  `txt` varchar(200) DEFAULT NULL COMMENT '问题内容',
  `created` datetime DEFAULT NULL,
  `updated` datetime DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `user_id` (`user_id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8

黑名单

[Java67 博客]

CREATE TABLE `tb_black_list` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `user_id` bigint(20) DEFAULT NULL,
  `black_user_id` bigint(20) DEFAULT NULL,
  `created` datetime DEFAULT NULL,
  `updated` datetime DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `user_id` (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='黑名单';

1.1.3 实体类

Settings

@Data
@NoArgsConstructor
@AllArgsConstructor
public class Settings extends BasePojo {

    private Long id;
    private Long userId;
    private Boolean likeNotification;
    private Boolean pinglunNotification;
    private Boolean gonggaoNotification;

}

Question

@Data
@NoArgsConstructor
@AllArgsConstructor
public class Question extends BasePojo {

    private Long id;
    private Long userId;
    //问题内容
    private String txt;

}

BlackList

@Data
@NoArgsConstructor
@AllArgsConstructor
public class BlackList extends BasePojo {

    private Long id;
    private Long userId;
    private Long blackUserId;
}

1.2 查询通用设置

1.2.1 接口文档

接口地址:

1.2.2 代码实现

vo对象

@Data
@NoArgsConstructor
@AllArgsConstructor
public class SettingsVo implements Serializable {

    private Long id;
    private String strangerQuestion = "";
    private String phone;
    private Boolean likeNotification = true;
    private Boolean pinglunNotification = true;
    private Boolean gonggaoNotification = true;


[MyBatis 映射器]

}

tanhua-app-server

tanhua-app-server中创建SettingsControllerSettingsService

SettingsController

SettingsController中定义控制器接收请求 , 调用业务层完成业务逻辑 ```java /** * 查询用户通用设置

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。