当前位置: 首页 > news >正文

【Spring Boot 整合 MongoDB 完整指南】

目录

  • Spring Boot 整合 MongoDB 完整指南
    • 1. 添加依赖
    • 2. 配置 MongoDB 连接
      • application.properties 方式:
      • application.yml 方式:
    • 3. 创建实体类(映射MongoDB中的文档,相当于MySQL的表)
    • 4. 创建 Repository 接口完成简单操作
    • 5. 使用 MongoTemplate 进行复杂操作
    • 6. 高级配置
      • 配置连接池
      • 开启审计功能
    • 7. 事务支持(需要MongoDB 4.0+)
    • 8. 索引管理
    • 9. 测试建议
    • 10. 常见问题解决
      • 连接问题
      • 时区问题

MongoDB是一种开源的 分布式文档型数据库管理系统 ,它使用类似于JSON的BSON格式(Binary JSON)来存储数据。

MongoDB使用集合(Collections)来组织文档(Documents),每个文档都是由键值对组成的。

  • 数据库(Database): 存储数据的容器,类似于关系型数据库中的数据库。
  • 集合(Collection): 数据库中的一个集合,类似于关系型数据库中的表。
  • 文档(Document): 集合中的一个数据记录,类似于关系型数据库中的行(row),以 BSON 格式存储。

MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成,文档类似于 JSON 对象,字段值可以包含其他文档,数组及文档数组:
在这里插入图片描述

Spring Boot 整合 MongoDB 完整指南

1. 添加依赖

pom.xml 中添加 MongoDB 相关依赖:

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>

2. 配置 MongoDB 连接

application.properties 方式:

# 本地MongoDB配置
spring.data.mongodb.host=localhost
spring.data.mongodb.port=27017
spring.data.mongodb.database=testdbspring.data.mongodb.authentication-database=admin  # 认证数据库(如果需要)
spring.data.mongodb.username=user  # (如果需要)
spring.data.mongodb.password=pass  # (如果需要)# 或者使用URI方式
spring.data.mongodb.uri=mongodb://localhost:27017/testdb
spring.data.mongodb.uri=mongodb://user:pass@localhost:27017/testdb?authSource=admin(如果需要)#用于控制MongoDB数据库是否自动创建索引。
spring.data.mongodb.auto-index-creation = true

application.yml 方式:

spring:data:mongodb:uri: mongodb://user:pass@localhost:27017/testdb?authSource=admin# 或者分项配置host: localhostport: 27017database: testdbauthentication-database: adminusername: userpassword: pass

3. 创建实体类(映射MongoDB中的文档,相当于MySQL的表)

import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
import java.util.Date;@Document(collection = "users") // 指定集合名称,就是类似mysql的表,如果不指定就以类名称作为集合名称
public class User {//唯一标识,映射到Mongodb文档的_id字段@Idprivate String id;private String name;private Integer age;private Date createTime;// 构造方法、getter和setter省略
}

4. 创建 Repository 接口完成简单操作

继承 MongoRepository<T, ID> 后,自动获得以下方法:

save(S entity)       // 保存/更新
findById(ID id)      // 按ID查询
findAll()           // 查询所有
deleteById(ID id)   // 按ID删除
count()             // 计数
// 以及其他18个预定义方法

传统方式需要手动编写 MongoTemplate 查询逻辑,而 Rep

相关文章:

【Spring Boot 整合 MongoDB 完整指南】

目录 Spring Boot 整合 MongoDB 完整指南1. 添加依赖2. 配置 MongoDB 连接application.properties 方式:application.yml 方式:3. 创建实体类(映射MongoDB中的文档,相当于MySQL的表)4. 创建 Repository 接口完成简单操作5. 使用 MongoTemplate 进行复杂操作6. 高级配置配置…...

prisma连接非关系型数据库mongodb并简单使用

prisma连接非关系型数据库如mongodb数据库并简单使用 安装 mongodbPrisma连接mongodb改造目录结构写一个model增查查多个查单个分页排序改改多个删单个多个最后代码进度安装 mongodb 社区版下载 副本集模式文档 可以百度下安装副本集模式,因为prisma要用事务。 如果你觉得安装…...

深度强化学习 | 基于SAC算法的移动机器人路径跟踪(附Pytorch实现)

目录 0 专栏介绍1 软性演员-评论家SAC算法2 基于SAC算法的路径跟踪2.1 SAC网络设计2.2 动作空间设计2.3 奖励函数设计 3 算法仿真 0 专栏介绍 本专栏以贝尔曼最优方程等数学原理为根基&#xff0c;结合PyTorch框架逐层拆解DRL的核心算法(如DQN、PPO、SAC)逻辑。针对机器人运动…...

VS中将控制台项目编程改为WINDOWS桌面程序

有时候因为误操作&#xff0c;建立了控制台项目&#xff0c;但是实际上想建立桌面程序。那么应该如何改过来呢&#xff1f; 一共要修改两个地方&#xff0c;修改步骤如下&#xff1a; 第一处修改地点&#xff1a; 将C/C下面的预处理器选项中&#xff0c;将原本的_CONSOLE修改…...

从API到UI:直播美颜SDK中的滤镜与贴纸功能开发与落地方案详解

时下&#xff0c;滤镜和贴纸功能&#xff0c;已经成为主播们展现个性、增强互动的“必备神器”。那么&#xff0c;这些功能背后的技术实现到底有多复杂&#xff1f;如何从API到UI构建一个流畅、灵活的美颜SDK呢&#xff1f;本文将从底层原理到前端实现&#xff0c;全面解析这两…...

vue3与springboot交互-前后分离【验证element-ui输入的内容】

系列文章目录 提示&#xff1a;帮帮志会陆续更新非常多的IT技术知识&#xff0c;希望分享的内容对您有用。本章分享的是node.js和vue的使用。前后每一小节的内容是存在的有&#xff1a;学习and理解的关联性。【帮帮志系列文章】&#xff1a;每个知识点&#xff0c;都是写出代码…...

VS2017编译librdkafka 2.1.0

VS2017编译librdkafka 2.1.0 本篇是 Windows系统编译Qt使用的kafka(librdkafka)系列中的其中一篇,编译librdkafka整体步骤大家可以参考: Windows系统编译Qt使用的kafka(librdkafka) 由于项目需要,使用kafka,故自己编译了一次,编译的过程,踩了太多的坑了,特写了本篇…...

DeepSeek 赋能数字孪生:重构虚实共生的智能未来图景

目录 一、数字孪生技术概述1.1 数字孪生的概念1.2 技术原理剖析1.3 应用领域与价值 二、DeepSeek 技术解读2.1 DeepSeek 的技术亮点2.2 与其他模型的对比优势 三、DeepSeek 赋能数字孪生3.1 高精度建模助力3.2 实时数据处理与分析3.3 智能分析与预测 四、实际案例解析4.1 垃圾焚…...

谷歌前CEO TED演讲解析:AI 红利的三年窗口期与行业重构

​谷歌前CEO埃里克施密特在2025年TED演讲中提出的"AI红利仅剩3年窗口期"观点&#xff0c;揭示了AI技术从算力、需求到监管的全局性变革。以下是基于演讲内容及关联数据的深度分析&#xff1a; 谷歌前CEO TED演讲解析&#xff1a;AI红利的三年窗口期与行业重构 一、算…...

数据仓库面试题合集②】ETL 设计与调度策略详解

📌 面试官为什么爱问 ETL 与调度? ETL 与调度是数据链路的“输血管道”,它的设计直接决定了数据处理的稳定性、扩展性与时效性。面试中此类问题侧重考察: 数据流设计是否合理 对任务依赖与失败容错的认知 是否具备复杂调度 DAG 设计经验 是否理解增量/全量策略、分区机制…...

前端入职总结

负责的工作内容&#xff0c;遇到的问题&#xff0c;怎么解决&#xff0c; 技能组溢出 问题一&#xff1a;溢入溢出bug 互斥实现的核心逻辑 状态管理&#xff1a; selectedOverflowGroups&#xff1a;存储当前选中的溢出技能组ID&#xff08;数字字符串数组&#xff09; sel…...

易境通海外仓系统:一件代发全场景数字化解决方案

随着全球经济一体化和消费升级&#xff0c;一件代发业务的跨境电商市场规模持续增长。然而&#xff0c;一件代发的跨境运营也面临挑战&#xff0c;传统海外仓管理模式更因效率低下、协同困难成为业务扩张的瓶颈。 一、一件代发跨境运营痛点 1、多平台协同&#xff1a;卖家往往…...

C#接口的setter或getter的访问性限制

有时候只想对外提供getter&#xff0c;但是属性的赋值又必须是setter&#xff0c;此时&#xff0c;可以限制setter的访问性。例如&#xff0c;假设有一个自定义字典(MyDict)属性&#xff0c;该属性我只希望外部能够访问&#xff0c;但是设置必须在内部&#xff0c;则可提供如下…...

云计算与大数据进阶 | 26、解锁云架构核心:深度解析可扩展数据库的5大策略与挑战(下)

在数据库的世界里&#xff0c;面对数据如潮水般的增长难题&#xff0c;聪明的工程师早已准备了五大扩展方案来应对&#xff0c;它们就像五把钥匙&#xff0c;以破解着不同场景下的性能困局。 上回书云计算与大数据进阶 | 26、解锁云架构核心&#xff1a;深度解析可扩展数据库的…...

SID 2025上的天马,用“好屏”技术重构产业叙事

作为全球最具影响力的显示行业盛会&#xff0c;SID国际显示周不仅是技术比拼的舞台&#xff0c;更是未来产业方向的风向标。SID 2025上的技术密度与产业动态&#xff0c;再一次验证了这一定律。 Micro-LED、柔性OLED、裸眼3D、量子点、透明显示等新技术在SID 2025集中亮相&…...

深入理解 Hadoop 核心组件 Yarn:架构、配置与实战

一、Hadoop 三大件概述 Hadoop 作为大数据领域的基石&#xff0c;其核心由三大组件构成&#xff1a; HDFS&#xff08;分布式文件系统&#xff09;&#xff1a;负责海量数据的分布式存储&#xff0c;通过数据分块和副本机制保障可靠性&#xff0c;是大数据存储的基础设施。 …...

Linux云计算训练营笔记day11(Linux CentOS7)

Linux云计算 云计算是一种服务&#xff0c;是通过互联网按需提供计算资源的服务模式 程序员写代码的&#xff0c;部署上线项目 买服务器(一台24小时不关机的电脑&#xff0c;为客户端提供服务) 20万 买更多的服务器 Linux(命令) windows(图形化) 就业岗位: 云计算工程师 li…...

2025年AI与网络安全的终极博弈:冲击、重构与生存法则

引言 2025年&#xff0c;生成式AI的推理速度突破每秒千万次&#xff0c;网络安全行业正经历前所未有的范式革命。攻击者用AI批量生成恶意代码&#xff0c;防御者用AI构建智能护盾&#xff0c;这场技术军备竞赛正重塑行业规则——60%的传统安全岗位面临转型&#xff0c;70%的防…...

Hadoop中 8020、9000、50070 端口用途的详细对比

Hadoop 端口用途对比教程 1. 端口用途总览 Hadoop 的核心服务(如 NameNode、DataNode、ResourceManager 等)通过不同的端口对外提供服务。不同版本中,部分端口号可能发生变化,尤其是 Hadoop 3.x 对部分默认端口进行了调整。 端口Hadoop 2.x (2.7.7)Hadoop 3.x (3.1.3)协议…...

HLS学习

文章目录 前言一、hls是什么二、m3u8文件格式说明 前言 在工作&#xff0c;需要跟m3u8的格式进行打交道&#xff0c;所以就去学习了一些相关的内容。本文是相关的笔记。 一、hls是什么 HTTP Live Streaming&#xff0c;缩写为HLS&#xff0c;是由苹果公司提出基于HTTP的流媒体…...

【Linux系统】Linux入门系统程序−进度条

文章目录 一、铺垫知识1.回车符 和 换行符的区别2.用户缓冲区问题 二、进度条程序初版&#xff08;含视频演示效果&#xff09;三、进度条程序(加入使用场景) 一、铺垫知识 1.回车符 和 换行符的区别 回车符’\r’ 的效果&#xff08;让光标回到当前行开头&#xff09; 和 换…...

Java大师成长计划之第27天:RESTful API设计与实现

&#x1f4e2; 友情提示&#xff1a; 本文由银河易创AI&#xff08;https://ai.eaigx.com&#xff09;平台gpt-4-turbo模型辅助创作完成&#xff0c;旨在提供灵感参考与技术分享&#xff0c;文中关键数据、代码与结论建议通过官方渠道验证。 在现代软件架构中&#xff0c;RESTf…...

SEO长尾词与关键词优化策略

内容概要 在搜索引擎优化&#xff08;SEO&#xff09;实践中&#xff0c;长尾关键词与核心关键词的协同布局是提升网站可见性与流量的核心路径。本文系统性阐述从基础策略到高阶技术的全链路优化方案&#xff0c;重点剖析长尾关键词的挖掘逻辑与筛选标准&#xff0c;建立基于搜…...

Linux-进程信号

1.快速认识信号 1.1生活角度的信号 你在⽹上买了很多件商品&#xff0c;再等待不同商品快递的到来。但即便快递没有到来&#xff0c;你也知道快递来临 时&#xff0c;你该怎么处理快递。也就是你能“识别快递” 当快递员到了你楼下&#xff0c;你也收到快递到来的通知&#…...

Trae生成 django5.2.1后台管理

安装django&#xff0c;采用的是5.2.1版本&#xff1a; pip install django Trae对话框中输入&#xff1a; 基于django框架&#xff0c;生成版本管理功能&#xff0c;版本管理模块命名为versions&#xff0c;工程项目命名为main 迁移数据库&#xff1a; python manage.py …...

Interrupt 2025 大会回顾:关于LangChain 的 AI Agent会议内容总结

Interrupt 2025 大会已圆满落下帷幕&#xff01;今年&#xff0c;来自全球各地的 800 多位人士齐聚旧金山&#xff0c;参加了 LangChain 首次举办的行业盛会&#xff0c;共同聆听各团队分享构建 AI Agent 的经验故事——会议的精彩和余温至今仍令人振奋&#xff01; 思科、优步…...

C#学习9——接口、抽象类

一、接口 1.什么是接口 官方话&#xff1a;是一种定义契约&#xff08;一组方法、属性、事件或索引器的抽象声明&#xff09;的机制&#xff0c;它规定了实现该接口的类或结构必须提供这些成员的具体实现。接口是面向对象编程中实现多态和抽象的重要工具。 个人理解&#xf…...

【高德开放平台-注册安全分析报告】

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 暴力破解密码&#xff0c;造成用户信息泄露短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造成亏损无底洞…...

Xshell实战:远程连接VMware CentOS7虚拟机与高效运维指南——从零配置到自动化操作,解锁Xshell的核心价值

一、实战背景与目标 在开发与运维工作中&#xff0c;常需通过本地Windows主机远程管理虚拟机中的Linux系统。Xshell作为专业终端工具&#xff0c;能快速建立安全连接&#xff0c;执行高效操作。 场景需求&#xff1a; 在Windows系统中&#xff0c;通过Xshell远程连接VMware中的…...

C#编写软件添加菜单栏

将MenuStrip控件拖动到窗体&#xff0c;可以直接在工具箱搜索menu&#xff0c;我是先在窗体上上加了一个panel&#xff0c;把MenuStrip拖动到panel上面&#xff0c;点击即可输入自己需要的文本。...

【C++】map和multimap的常用接口详解

map和multimap的文档&#xff1a;<map> - C Reference 1.map类的介绍 map 有两个模板参数&#xff0c;是 key/value的场景。 这里的Key就是key&#xff0c;T就是value&#xff0c;命名不同而已。map默认要求Key⽀持⼩于⽐较&#xff08;升序&#xff09;&#xff0c;如…...

线程池模式与C#中用法

一、线程池模式解析 1. 核心概念 线程池是一种 管理线程生命周期的技术&#xff0c;主要解决以下问题&#xff1a; 减少线程创建/销毁开销&#xff1a;复用已存在的线程 控制并发度&#xff1a;避免无限制创建线程导致资源耗尽 任务队列&#xff1a;有序处理异步请求 2. …...

47、C#可否对内存进⾏直接的操作?

是的&#xff0c;C# 可以通过几种方式对内存进行直接操作&#xff0c;尽管它主要是一门托管语言&#xff0c;内存管理通常由.NET运行时自动处理。 主要方法 1.unsafe 代码和指针 使用 unsafe 关键字可以启用指针操作需要项目启用"允许不安全代码"选项示例&#xf…...

精益数据分析(70/126):MVP迭代中的数据驱动决策与功能取舍

精益数据分析&#xff08;70/126&#xff09;&#xff1a;MVP迭代中的数据驱动决策与功能取舍 在创业过程中&#xff0c;最小可行化产品&#xff08;MVP&#xff09;的迭代优化是从验证假设到实现产品市场契合的关键环节。今天&#xff0c;我们结合《精益数据分析》中的方法论…...

大数据与数据库服务器参数调优方法

1 硬件配置优化 ‌存储与磁盘‌ 优先选择 ‌SSD固态硬盘‌替代机械硬盘,显著降低I/O延迟,提升随机读写性能。 采用 ‌RAID 10阵列‌实现高性能与冗余的平衡,适用于高并发数据库场景。 大数据场景中,通过‌多磁盘并行挂载‌(如HDFS)提升吞吐量,规避单盘性能瓶颈。 ‌I/…...

【Fifty Project - D28】

今日完成记录 TimePlan完成情况9&#xff1a;30 - 11&#xff1a;30Leetcode√14&#xff1a;00 - 15&#xff1a;30练胸√15&#xff1a;30 - 16&#xff1a;30Leetcode√19&#xff1a;40 - 21&#xff1a;20有氧√ Leetcode 今天是周赛复盘篇&#xff0c;昨天的周赛太刺激…...

Image and depth from a conventional camera with a coded aperture论文阅读

Image and depth from a conventional camera with a coded aperture 1. 研究目标与实际意义1.1 研究目标1.2 实际问题与产业意义2. 创新方法:编码光圈设计与统计模型2.1 核心思路2.2 关键公式与模型架构2.2.1 图像形成模型2.2.2 深度可区分性准则2.2.3 统计模型与优化框架2.2…...

vue3 vite 项目中自动导入图片

vue3 vite 项目中自动导入图片 安装插件配置插件使用方法 安装插件 yarn add vite-plugin-vue-images -D 或者 npm install vite-plugin-vue-images -D配置插件 在 vite.config.js 文件中配置插件 // 引入 import ViteImages from vite-plugin-vue-images;plugins: [vue(),/…...

软考-软件工程开发模型

软考-软件工程开发模型 参考视频&#xff1a; 软件工程概述&开发模型 &#xff0c;配合视频理解更清晰&#xff5e; 软件的生命周期为&#xff1a;需求分析、软件设计、软件开发、运行维护直至被淘汰 几个阶段。 软件工程支持 4 个活动&#xff0c;简称 PDCA&#xff0c…...

纸上流年:Linux基础IO的文件理解与操作

文章目录 前言&#xff1a;数字世界的窗口&#x1f307;序章&#x1f3d9;️正文一、文件理解二、C语言文件操作2.1、文件打开2.2、文件关闭2.3、文件写入2.4、文件读取 三、系统级文件操作3.1、打开 open3.1.1、函数理解 3.2、关闭 close3.3、写入 write3.4、读取 read 四、小…...

基础深度补全模型DepthLab: From Partial to Complete

许多任务本身就包含部分深度信息&#xff0c;例如&#xff1a;&#xff08;1&#xff09;三维高斯图像修复&#xff1b;&#xff08;2&#xff09;激光雷达深度补全&#xff1b;&#xff08;3&#xff09;利用 Dust3R 进行稀疏视角重建&#xff1b;以及&#xff08;4&#xff0…...

15 秒写一首歌?AI 音乐生成模型 ACE-Step 上手体验!

在人工智能技术持续突破的浪潮中&#xff0c;音乐创作领域迎来了革命性的变革。近日&#xff0c;阶跃星辰与ACE Studio联合发布的开源音乐大模型ACE-Step&#xff08;中文名&#xff1a;音跃&#xff09;正式亮相&#xff0c;标志着AI音乐创作技术迈入全新阶段。这款集成了最新…...

如何在数据库中正确存储金额?

无论是开发电商平台、财务系统还是支付应用&#xff0c;金额的存储都是核心需求。但许多新手开发者常因字段类型选择不当&#xff0c;导致金额计算错误甚至资金损失。本文将用最通俗的语言&#xff0c;详细讲解如何专业地设计数据库中的金额字段。 一、为什么不能随便选字段类型…...

网络请求和状态管理

安装axios 创建项目&#xff0c;输入名称 新建文件夹&#xff1a; 在文件夹下输入cmd 运行 最后在复制到浏览器中 得到页面 使用axios axios封装成模块 实现一个学生信息案例 模拟数据&#xff0c;请求数据 安装完成后新建一个mock文件夹&#xff0c;制作一个模拟数据 配置…...

TIF导入TWF坐标方法

TIF坐标导入 1、打开Arcmap&#xff0c;将影像拖入界面&#xff0c;点击确定 2、点击工具箱→投影变换→定义投影 国家2000&#xff0c;WGS84坐标系 点击确定 显示已完成&#xff0c;即可 3、批处理 将需要定义的tif拖入到ARCMAP中&#xff0c;点击定义投影&#xff0c;右键…...

系统思考:动态性复杂

我们是否有遇到过这样的困境&#xff1f;做决策时&#xff0c;总觉得问题很简单&#xff0c;但总是看不清楚全貌。越做越复杂&#xff0c;最后好像什么都没解决&#xff0c;反而把事情弄得更糟。 其实&#xff0c;这就是动态性复杂的表现。它包含了两个关键因素&#xff1a;细节…...

智能体应用如何重塑未来生活?全面解析技术场景与实在Agent突破

智能体应用有哪些&#xff1f;在科技飞速发展的当下&#xff0c;人工智能正以前所未有的速度渗透到我们生活的方方面面。而智能体技术&#xff0c;作为人工智能领域的一颗璀璨新星&#xff0c;正逐渐展现出其重塑未来生活的巨大潜力。从办公效率的提升到医疗服务的优化&#xf…...

20.自动化测试框架开发之Excel配置文件的IO开发

20.自动化测试框架开发之Excel配置文件的IO开发 一、核心架构解析 1.1 类继承体系 class File: # 文件基类# 基础文件验证和路径管理class ExcelReader(File): # Excel读取器# 实现Excel数据解析逻辑1.2 版本依赖说明 # 必须安装1.2.0版本&#xff08;支持xlsx格式&#…...

1.1 Epson机器人常用指令1-Print函数、RobotInfo$

本文介绍Print, RobotInfo的使用. 主要总结如下&#xff1a; 1. Print可以向串口、网口、手操器TP1&#xff0c;RC软件等发送数据 2. RobotInfo$(4)可以得到机器人序列号。用于防止程序下载到其他机器人上。 3. CX, CY, CZ可以返回点的XYZ坐标值。 Rea…...

【机器人】复现 3D-Mem 具身探索和推理 | 3D场景记忆 CVPR 2025

3D-Mem 是用于具体探索和推理的3D场景记忆&#xff0c;来自CVPR 2025. 使用信息丰富的多视角图像&#xff0c;来表示场景并捕捉已探索区域的丰富视觉信息&#xff0c; 整合了基于前沿的探索&#xff0c;使智能体能够通过考虑已知和潜在的新信息&#xff0c;做出明智的决策。 …...