前言

  • 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的的例子,复习了一下,需要入门的同学可以参照这个例子,源码在这

源码链接

文章个人博客地址:

spring boot配置使用mongodb

创作不易,转载请注明出处和作者。

欢迎关注公众号:程序员布欧,不定期更新技术入门文章

2023年了,复习了一下spring boot配置使用mongodb的更多相关文章

  1. Spring Boot -- 配置切换指南

    一般在一个项目中,总是会有好多个环境.比如: 开发环境 -> 测试环境 -> 预发布环境 -> 生产环境 每个环境上的配置文件总是不一样的,甚至开发环境中每个开发者的环境可能也会有一 ...

  2. Spring Boot 配置优先级顺序

    一般在一个项目中,总是会有好多个环境.比如: 开发环境 -> 测试环境 -> 预发布环境 -> 生产环境 每个环境上的配置文件总是不一样的,甚至开发环境中每个开发者的环境可能也会有一 ...

  3. spring boot 配置注入

    spring boot配置注入有变量方式和类方式(参见:<spring boot 自定义配置属性的各种方式>),变量中又要注意静态变量的注入(参见:spring boot 给静态变量注入值 ...

  4. Spring boot配置多个Redis数据源操作实例

    原文:https://www.jianshu.com/p/c79b65b253fa Spring boot配置多个Redis数据源操作实例 在SpringBoot是项目中整合了两个Redis的操作实例 ...

  5. Spring Boot中使用MongoDB数据库

    前段时间分享了关于Spring Boot中使用Redis的文章,除了Redis之后,我们在互联网产品中还经常会用到另外一款著名的NoSQL数据库MongoDB. 下面就来简单介绍一下MongoDB,并 ...

  6. spring boot配置springMVC拦截器

    spring boot通过配置springMVC拦截器 配置拦截器比较简单, spring boot配置拦截器, 重写preHandle方法. 1.配置拦截器: 2重写方法 这样就实现了拦截器. 其中 ...

  7. spring boot配置mybatis和事务管理

    spring boot配置mybatis和事务管理 一.spring boot与mybatis的配置 1.首先,spring boot 配置mybatis需要的全部依赖如下: <!-- Spri ...

  8. [转] Spring Boot配置多个DataSource

    [From]  https://www.liaoxuefeng.com/article/001484212576147b1f07dc0ab9147a1a97662a0bd270c20000 Sprin ...

  9. Spring boot 配置异步处理执行器

    示例如下: 1. 新建Maven 项目 async-executor 2.pom.xml <project xmlns="http://maven.apache.org/POM/4.0 ...

  10. Spring boot配置404、500页面

    Spring boot 配置404页面很简单,如果你访问的url没有找到就会出现spring boot 提示的页面,很明显Spring boot不用配置就可以显示404页面了. 在template下创 ...

随机推荐

  1. 荣登国家级榜单!ShowMeBug创始人李亚飞入选「科创中国·青年创业榜」

    近日,中国科协召开2022"科创中国"年度会议,会上发布了2021"科创中国"系列榜单.其中,ShowMeBug 创始人&CEO李亚飞入选2021年科创 ...

  2. 通过命令行创建ACFS文件系统

    其实使用asmca图形创建ACFS文件系统既简单又不容易出错,但是考虑到某些客户场景不允许我们调取图形,所以本文演示下通过命令行创建ACFS文件系统的步骤. 可以通过MOS搜索到下面这篇文档: ASM ...

  3. 为什么会出现 setTimeout 倒计时误差

    setTimeout 倒计时误差的出现主要与 JavaScript 的事件循环机制和计时器的执行方式有关. 在 JavaScript 中,事件循环是用于管理和调度代码执行的机制.setTimeout ...

  4. DIY制作隔离信号注入变压器

    最近在学习模电知识,接触到了测量运放环路增益,需要使用合适的注入变压器,查找资料发现商用信号注入变压器价格昂贵,不适合个人学习使用.看到LOTO使用普通音频变压器做测试,也跟技术群友做了交流,尝试使用 ...

  5. 2023-06-13:统计高并发网站每个网页每天的 UV 数据,结合Redis你会如何实现?

    2023-06-13:统计高并发网站每个网页每天的 UV 数据,结合Redis你会如何实现? 答案2023-06-13: 选用方案:HyperLogLog 如果统计 PV (页面浏览量)那非常好办,可 ...

  6. spring-boot-maven-plugin插件详解

    一. 为什么Spring Boot项目自带这个插件 当我们在SpringBoot官方下载一个脚手架时,会发现pom.xml会自带spring-boot-maven-plugin插件 <?xml ...

  7. Bean生命周期的扩展点:Bean Post Processor

    摘要:在本篇文章中,我们将深入探讨Spring框架中的重要组件--BeanPostProcessor.首先,我们将了解其设计理念和目标,然后通过实际的例子学习如何基础使用它,如何通过BeanPostP ...

  8. AI-2预备知识

    2.1数据操作笔记 PyTorch和TensorFlow中的Tensor类型可做为张量使用,可支持GPU操作和自动微分. 广播机制:对不同形状的张量可使用广播机制进行运算. 为节省内存,可使用 X[: ...

  9. 基于词袋(Bag of Words)和SVM的图片分类

    目录 摘要 源码及完整报告: 词袋(Bag of Words, BoW) 基于词袋模型的图片分类基本流程 多尺度空间极值点检测 关键点精确定位 关键点主方向计算 生成描述子 特征词典的生成 SVM分类 ...

  10. Sentieon | 每周文献-Genetic Disease-第二期

    遗传病系列文章-1 标题(英文):Answer ALS, a large-scale resource for sporadic and familial ALS combining clinical ...