创建Spring Data MongoDB 依赖的 Spring Boot 项目 在 IntelliJ IDEA 中新建一个包含 Spring Data MongoDB 依赖的 Spring Boot 项目最直接的方式是使用其内置的 Spring Initializr 项目向导。以下是具体步骤步骤一创建新项目打开新建项目向导启动 IntelliJ IDEA。如果看到欢迎屏幕点击 “新建项目”如果已经在一个项目中则通过顶部菜单选择 “文件” - “新建” - “项目”。选择项目生成器在弹出的“新建项目”对话框中从左侧的“生成器”列表中选择 “Spring Boot”。步骤二配置项目基本信息在向导的下一步中配置项目的核心信息名称为你的项目起一个名字例如 mongodb-demo。语言选择 Java。类型选择 Maven这是最主流的方式。JDK选择你已安装的 JDK版本 17 或以上这是 Spring Boot 3.x 的基础要求。如果没有可以点击“下载 JDK”。其他选项如“组”、“工件”、“包名”可以使用默认值或按需修改。步骤三添加 Spring Data MongoDB 依赖这是最关键的一步。点击 “下一步”进入依赖选择界面。在依赖搜索框中输入 Spring Data MongoDB。在搜索结果中勾选 Spring Data MongoDB 依赖。可选如果你的项目需要提供 Web API建议同时搜索并勾选 Spring Web 依赖。步骤四生成并打开项目完成依赖选择后点击 “创建” 按钮。IntelliJ IDEA 将自动连接到 Spring Initializr 服务生成项目结构并下载所有依赖。这可能需要一点时间。验证与后续配置项目创建成功后可以进行以下验证和配置1.检查pom.xml文件打开项目根目录下的pom.xml文件你应该能在dependencies标签中看到自动添加的spring-boot-starter-data-mongodb依赖。dependencies dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-data-mongodb/artifactId /dependency dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-webmvc/artifactId /dependency2.配置 MongoDB 连接在src/main/resources目录下的application.properties或application.yml文件中配置你的 MongoDB 连接信息。application.properties示例spring.application.namecdms spring.mongodb.urimongodb://192.168.0.51:27017/cdmsdbspring.application.namecdms spring.mongodb.urimongodb://{用户名}:{密码}192.168.0.51:27017/cdmsdb?authSourcecdmsdb #生产环境需设置登录用户名、密码数据库名称配置 mongodb 数据库连接及验证。3、操作创建集合package com.mongodb.cdms; import com.mongodb.client.MongoCollection; import org.bson.Document; import org.junit.jupiter.api.Test; // 导入这个注解 import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.boot.test.context.SpringBootTest; public class mongotemplate extends CdmsApplicationTests { Autowired private MongoTemplate mongoTemplate; Test // 添加这个注解 public void createCollectionTest() { if (!mongoTemplate.collectionExists(user_test)) { mongoTemplate.createCollection(user_test); System.out.println(集合创建成功); } Document doc new Document(username, test) .append(age, 20); MongoCollectionDocument collection mongoTemplate.getCollection(user_test); collection.insertOne(doc); } }右键 Run 这个程序4、CRUD操作package com.mongodb.cdms; import com.mongodb.cdms.entity.CustInfo; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Query; import org.springframework.data.mongodb.core.query.Update; import java.util.List; import static org.springframework.data.mongodb.core.query.Criteria.where; SpringBootTest public class CustInfoCrudTest { Autowired private MongoTemplate mongoTemplate; // 1. 插入Create Test public void insertTest() { CustInfo cust new CustInfo(C1001, 李磊, M, 13800001111, 北京市朝阳区1号); CustInfo saved mongoTemplate.insert(cust, CUST_INFO2); // 指定集合名 System.out.println(插入成功ID: saved.getId()); } // 批量插入如需 Test public void insertBatchTest() { // 略参考之前的批量插入示例 } // 2. 查询Read // 2.1 查询所有 Test public void findAllTest() { ListCustInfo list mongoTemplate.findAll(CustInfo.class, CUST_INFO2); System.out.println(共 list.size() 条记录); list.forEach(System.out::println); } // 2.2 等值查询根据 CUST_ID Test public void findByCustIdTest() { Query query Query.query(Criteria.where(CUST_ID).is(C1001)); CustInfo cust mongoTemplate.findOne(query, CustInfo.class, CUST_INFO2); System.out.println(查询结果 cust); } // 2.3 多个条件组合gender phone_num Test public void findByGenderAndPhoneTest() { Query query Query.query( Criteria.where(gender).is(M) .and(phone_num).regex(^138) // 电话以138开头模糊查询 ); ListCustInfo list mongoTemplate.find(query, CustInfo.class, CUST_INFO2); System.out.println(符合条件男且138开头的记录数 list.size()); list.forEach(System.out::println); } // 2.4 条件address 包含“北京”正则模糊查询 Test public void findByAddressLikeTest() { Query query Query.query(Criteria.where(address).regex(.*北京.*)); ListCustInfo list mongoTemplate.find(query, CustInfo.class, CUST_INFO2); System.out.println(地址包含“北京”的记录数 list.size()); } // 2.5 条件CUST_NAME 以“张”开头前缀匹配 Test public void findByNamePrefixTest() { Query query Query.query(Criteria.where(CUST_NAME).regex(^张)); ListCustInfo list mongoTemplate.find(query, CustInfo.class, CUST_INFO2); System.out.println(姓张的客户数 list.size()); } // 2.6 分页查询示例第1页每页10条按CUST_ID升序 Test public void findPageTest() { int page 1; // 页码从1开始 int size 10; Query query new Query(); query.skip((page - 1) * size).limit(size); query.with(org.springframework.data.domain.Sort.by(CUST_ID).ascending()); ListCustInfo list mongoTemplate.find(query, CustInfo.class, CUST_INFO2); list.forEach(System.out::println); } // 3. 更新Update // 3.1 更新单个字段根据 CUST_ID 修改地址 Test public void updateAddressTest() { Query query Query.query(Criteria.where(CUST_ID).is(C1001)); Update update new Update().set(address, 上海市浦东新区2号); // 更新第一个匹配的文档 mongoTemplate.updateFirst(query, update, CustInfo.class, CUST_INFO2); System.out.println(更新完成); } // 3.2 批量更新将 gender 为 F 的电话号码前缀改为 150演示 Test public void updateBatchTest() { Query query Query.query(Criteria.where(gender).is(F)); Update update new Update().set(phone_num, 150 00000000); // 简单示例实际需拼接 // 更新所有匹配的文档 mongoTemplate.updateMulti(query, update, CustInfo.class, CUST_INFO2); System.out.println(批量更新完成); } // 3.3 使用 upsert如果不存在则插入 Test public void upsertTest() { Query query Query.query(Criteria.where(CUST_ID).is(C9999)); Update update new Update() .set(CUST_NAME, 王五) .set(gender, M) .set(phone_num, 13999999999) .set(address, 成都市武侯区); mongoTemplate.upsert(query, update, CustInfo.class, CUST_INFO2); System.out.println(upsert 执行完成若不存在则插入); } // 4. 删除Delete // 4.1 删除符合条件的第一个文档 Test public void deleteFirstTest() { Query query Query.query(Criteria.where(phone_num).is(13800001111)); mongoTemplate.remove(query, CustInfo.class, CUST_INFO2); System.out.println(删除成功第一个匹配的文档); } // 4.2 删除所有符合条件的数据例如删除 CUST_ID 以 C9 开头的 Test public void deleteAllByConditionTest() { Query query Query.query(Criteria.where(CUST_ID).regex(^C9)); mongoTemplate.remove(query, CustInfo.class, CUST_INFO2); System.out.println(删除所有 CUST_ID 以 C9 开头的记录); } // 4.3 删除整个集合慎用 Test public void dropCollectionTest() { mongoTemplate.dropCollection(CUST_INFO2); System.out.println(集合 CUST_INFO2 已被删除); } }

相关新闻

最新新闻

SpringBoot图书馆座位预订系统设计与高并发实践

SpringBoot图书馆座位预订系统设计与高并发实践

1. 项目概述:SpringBoot图书馆座位预订管理系统图书馆座位资源管理一直是高校和公共图书馆面临的痛点问题。每到考试季或寒暑假,学生们凌晨排队抢座位的场景屡见不鲜。我们团队开发的这套基于SpringBoot的座位预订系统,通过信息化手段实现了座…

2026/8/8 2:58:08
特征工程核心解析:特征、维度与深度在机器学习中的实践应用

特征工程核心解析:特征、维度与深度在机器学习中的实践应用

1. 项目概述:从“数据”到“特征”的认知跃迁在数据科学和机器学习的日常工作中,我们每天都在和“特征”打交道。但你是否曾停下来仔细思考过,当我们谈论“特征”、“特征维度”和“特征深度”时,我们到底在说什么?这不…

2026/8/8 2:58:08
Inno Setup实战教程:从零制作Windows桌面安装包

Inno Setup实战教程:从零制作Windows桌面安装包

1. 从零开始:为什么Inno Setup依然是桌面安装包的首选?如果你是一个独立开发者,或者在一个小团队里负责打包分发桌面软件,那你肯定对“如何把代码变成用户双击就能装的程序”这个问题不陌生。市面上打包工具不少,从商业…

2026/8/8 2:58:08
粒子群算法在分布式电源选址定容中的应用与优化

粒子群算法在分布式电源选址定容中的应用与优化

1. 分布式电源规划的现实挑战与粒子群算法优势在能源结构转型的大背景下,分布式电源(Distributed Generation, DG)正逐渐成为配电网中的重要组成部分。与传统集中式发电不同,DG通常指分布在用户侧的小型发电单元,包括光…

2026/8/8 2:58:08
OpenClaw:AI Agent基础设施框架,赋能复杂任务执行与工具调用

OpenClaw:AI Agent基础设施框架,赋能复杂任务执行与工具调用

1. 项目概述:当AI Agent遇上“瑞士军刀”最近在AI开发者圈里,OpenClaw这个名字的讨论热度有点高。如果你也在关注AI Agent(智能体)的开发,可能已经不止一次在各种技术社区、项目分享里看到它了。但很多人第一眼看到“O…

2026/8/8 2:58:08
从零构建Agent记忆系统:短期上下文与长期向量化存储实战

从零构建Agent记忆系统:短期上下文与长期向量化存储实战

1. 项目概述:为什么记忆是Agent的命门?最近在社区里跟几个做Agent的朋友聊天,发现一个挺有意思的现象:很多团队初期都把精力花在“思考”和“行动”模块上,比如怎么让大模型更好地调用工具(Function Callin…

2026/8/8 2:53:07