2023年了,复习了一下spring boot配置使用mongodb
前言
- MongoDB是一个基于分布式文件存储的开源数据库系统,使用C++语言编写。它是一个介于关系数据库和非关系数据库之间的产品,具有类似关系数据库的功能,但又有一些非关系数据库的特点。MongoDB的数据模型比较松散,采用类似json的bson格式,可以灵活地存储各种类型的数据
MongoDB的优点
高性能MongoDB使用C++编写,具有高效的I/O处理能力和磁盘读写速度,能够在高并发的情况下处理大量数据请求
可扩展性MongoDB采用分布式文件存储,可以方便地进行水平扩展,增加服务器数量即可提高整体性能和容量
易用性MongoDB提供了丰富的编程语言驱动程序,包括Java、Python、PHP、C#等,使得开发人员可以方便地使用MongoDB进行数据存储和查询
灵活性MongoDB支持的数据结构非常松散,可以灵活地存储各种类型的数据,包括文档、图片、视频等,满足不同应用的需求
MongoDB的缺点
事务支持不足MongoDB在早期版本中并没有完全支持事务,这使得在处理一些需要事务保证的业务时存在局限性。虽然最新版本已经支持事务,但与传统的关系型数据库相比,事务支持仍然不足
数据安全性MongoDB的数据安全性相对较低,尤其是在多节点环境中,数据的一致性难以得到保证。此外,MongoDB没有内置的数据备份和恢复机制,需要手动进行备份和恢复操作
适用场景有限MongoDB适用于存储大量数据和高并发的场景,但在一些需要精确查询和复杂逻辑处理的场景中,MongoDB可能无法满足需求。在这种情况下,传统的关系型数据库可能更为适用
MongoDB应用场景MongoDB被广泛应用于各种场景,比较典型的应用包括
Web应用MongoDB适合用于Web应用的数据存储,尤其是对于需要处理大量用户请求和高并发的场景,例如社交网络、电商网站等
日志和监控数据MongoDB可以高效地存储大量的日志和监控数据,支持水平扩展和高并发写入,方便开发人员进行分析和监控
缓存MongoDB可以作为缓存层使用,将常用数据存储在MongoDB中,以提高查询效率。同时,MongoDB支持数据的过期时间和LRU缓存策略,可以有效地管理缓存生命周期
文档存储MongoDB适合存储结构化和半结构化的文档数据,例如邮件、文档、图片等,可以方便地进行读取和搜索操作
Spring boot配置使用mongodb
新建一个spring boot工程,工程目录如下

配置连接池,mongodb配置前缀需要加上mongodb
spring:
data:
mongodb:
uri: mongodb://localhost:27017/test
entity字段
@Data
@Document(collection = "user") //指定要对应的文档名(表名)
@Accessors(chain = true)
public class User {
@Id
private String id;//用户ID
private String name; //用户名称
}
使用mongodb实现简单的用户增删改查功能
备注:这里为了处理数据方便,就直接返回mongodb返回的数据格式了,并且处理成字符串格式,
实际的开发业务场景需要根据项目需要去处理
使用insert方法新增
@Override
public String insertUser(User user) {
User userInfo = mongoTemplate.insert(user);
return userInfo.toString();
}
使用findAll方法查询user集合
@Override
public String queryUser() {
List<User> userList = mongoTemplate.findAll(User.class,"user");
return userList.toString();
}
使用updateFirst方法更新查询到的第一个用户的信息
@Override
public String updateUser(User user) {
Update update = new Update();
update.set("name",user.getName());
mongoTemplate.updateFirst(Query.query(Criteria.where("id").is(user.getId())),update,User.class);
User userinfo = mongoTemplate.findById(user.getId().toString(),User.class);
return userinfo.toString();
}
使用remove方法删除用户信息
@Override
public String deleteUser(User user) {
mongoTemplate.remove(Query.query(Criteria.where("id").is(user.getId())),User.class);
return "删除用户成功";
}
结尾
以上spring boot配置使用mongodb的的例子,复习了一下,需要入门的同学可以参照这个例子,源码在这
文章个人博客地址:
创作不易,转载请注明出处和作者。
欢迎关注公众号:程序员布欧,不定期更新技术入门文章

2023年了,复习了一下spring boot配置使用mongodb的更多相关文章
- Spring Boot -- 配置切换指南
一般在一个项目中,总是会有好多个环境.比如: 开发环境 -> 测试环境 -> 预发布环境 -> 生产环境 每个环境上的配置文件总是不一样的,甚至开发环境中每个开发者的环境可能也会有一 ...
- Spring Boot 配置优先级顺序
一般在一个项目中,总是会有好多个环境.比如: 开发环境 -> 测试环境 -> 预发布环境 -> 生产环境 每个环境上的配置文件总是不一样的,甚至开发环境中每个开发者的环境可能也会有一 ...
- spring boot 配置注入
spring boot配置注入有变量方式和类方式(参见:<spring boot 自定义配置属性的各种方式>),变量中又要注意静态变量的注入(参见:spring boot 给静态变量注入值 ...
- Spring boot配置多个Redis数据源操作实例
原文:https://www.jianshu.com/p/c79b65b253fa Spring boot配置多个Redis数据源操作实例 在SpringBoot是项目中整合了两个Redis的操作实例 ...
- Spring Boot中使用MongoDB数据库
前段时间分享了关于Spring Boot中使用Redis的文章,除了Redis之后,我们在互联网产品中还经常会用到另外一款著名的NoSQL数据库MongoDB. 下面就来简单介绍一下MongoDB,并 ...
- spring boot配置springMVC拦截器
spring boot通过配置springMVC拦截器 配置拦截器比较简单, spring boot配置拦截器, 重写preHandle方法. 1.配置拦截器: 2重写方法 这样就实现了拦截器. 其中 ...
- spring boot配置mybatis和事务管理
spring boot配置mybatis和事务管理 一.spring boot与mybatis的配置 1.首先,spring boot 配置mybatis需要的全部依赖如下: <!-- Spri ...
- [转] Spring Boot配置多个DataSource
[From] https://www.liaoxuefeng.com/article/001484212576147b1f07dc0ab9147a1a97662a0bd270c20000 Sprin ...
- Spring boot 配置异步处理执行器
示例如下: 1. 新建Maven 项目 async-executor 2.pom.xml <project xmlns="http://maven.apache.org/POM/4.0 ...
- Spring boot配置404、500页面
Spring boot 配置404页面很简单,如果你访问的url没有找到就会出现spring boot 提示的页面,很明显Spring boot不用配置就可以显示404页面了. 在template下创 ...
随机推荐
- RESTful API 简介
RESTful API 简介 想必使用过 PHP.JSP 这一类服务器动态页面技术的程序员应该都还记得,在使用这种传统的动态页面架构构建应用程序的时候,用于描述用户界面的 HTML 页面通常都是在服务 ...
- 原生AJAX的学习
基础知识 知识点梳理见图: 自己动手实践案例 案例1: 访问本地文件 <!DOCTYPE html> <html> <body> <div id=" ...
- #PowerBi Superchange PowerBi 序言部分笔记(2)
Xmind本文思维导图 序言部分,主要讲述了BI的分类及发展,以及作者推荐的学习方法.重点是介绍了powerbi的主要四大步骤. 即: 一:数据采集 Data acquisition: Power B ...
- 逆向之Ja3指纹学习
声明 本文章中所有内容仅供学习交流,抓包内容.敏感网址.数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除! tls tls实际上前身就 ...
- CF1608F MEX counting
题意 给定 \(n, k\) 和序列 \(b_{1\dots n}\),计数序列 \(a_{1\dots n}\) 使得 \(\forall i \in [1, n], \operatorname{m ...
- C#/.Net的多播委托到底是啥?彻底剖析下
前言 委托在.Net里面被托管代码封装了之后,看起来似乎有些复杂.但是实际上委托即是函数指针,而多播委托,即是函数指针链.本篇来只涉及底层的逻辑,慎入. 概括 1.示例代码 public delega ...
- 反转链表 Java版 图文并茂思路分析带答案(力扣第206题)
反转链表 力扣第206题 我们不只是简单的学习(背诵)一个数据结构,而是要分析他的思路,以及为什么要有不同的指针等等 非递归方式: 思路分析:首先要链表有个头指针没有任何问题 然后,我们要将1的下一个 ...
- RLHF技术在情感分析中的应用:捕捉情感世界中的真实情感”
目录 1. 引言 2. 技术原理及概念 2.1 基本概念解释 2.2 技术原理介绍 2.3 相关技术比较 3. 实现步骤与流程 3.1 准备工作:环境配置与依赖安装 3.2 核心模块实现 3.3 集成 ...
- GPT3:人工智能时代的新型语言模型
目录 GPT-3:人工智能时代的新型语言模型 随着人工智能技术的不断发展,自然语言处理领域也迎来了新的里程碑.GPT-3 是当前最具代表性的语言模型之一,它具有如下特点: GPT-3 是一种全新的语言 ...
- P3133 [USACO16JAN] Radio Contact G 无线电通话
P3133 [USACO16JAN] Radio Contact G 无线电通话 目录 P3133 [USACO16JAN] Radio Contact G 无线电通话 [USACO16JAN] Ra ...