SpringBoot 集成 Spring Data MongoDB 进行操作 MongoDB 基础使用

本文讲解了如何在 Spring Boot 项目中使用 Spring Data MongoDB 进行基础操作,包括 增删改查(CRUD)、条件查询、分页查询 以及 数据统计。文章通过示例代码演示了如何设计实体类、定义 Repository 接口以及调用各种查询方法,帮助读者快速掌握在 Spring Boot 中高效操作 MongoDB 的技巧。适合希望在实际项目中使用 MongoDB 进行数据管理的开发者阅读。
1
引入maven依赖

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
引入上面这个maven依赖 如图所示
2
配置 yml

配置如下 这个是没有认证的
spring:
mongodb:
host: 127.0.0.1
port: 27017
database: test
带认证的就加上username和password
spring:
mongodb:
host: 127.0.0.1
port: 27017
database: test
username:
如图所示
3
创建实体类

结构如图 代码如下
package com.doit.mongodbdemo.domin;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
import org.springframework.data.mongodb.core.mapping.Document;
import org.springframework.data.mongodb.core.mapping.MongoId;
/**
* @author gjq
* @version 1.0
* @description: User实体类
* @date 2025/12/6 17:20
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@ToString
// 那 Spring Data MongoDB 会把这个类映射到 MongoDB 的 user 集合中。
//如果不写 collection 字段,则默认使用类名的小写形式(如 User → user)。
@Document(collection = "user")
public class User {
/**
* 使用 @MongoID 能更清晰的指定 _id 主键
*/
@MongoId
private String id;
/**
* 姓名
*/
private String name;
/**
* 性别
*/
private String gender;
/**
* 年龄
*/
private Integer age;
}
4
集合索引




12
创建集合代码如下 效果如图所示
public void createCollection(String name) {
mongoTemplate.createCollection(name);
boolean result = mongoTemplate.collectionExists(name);
System.out.println(result ? "成功" : "失败");
}
5
新增文档数据





123
示例代码如下,如图1所示他会返回新增成功后的数据,也就是说明如果我们不给他分配id他就会返回mongdb自动生成的id 如图2所示
public void insertDoc(User user) {
User result = mongoTemplate.insert(user);
System.err.println(result);
}
6
修改文档数据




12
示例代码如下 效果如图所示
返回结果 :
- matchedCount = 1 代表有一条数据符合结果
- modifiedCount = 1 代表实际有 1 条文档被修改了内容。
- upsertedId = null 代表这次更新 没有执行插入(upsert)。
注意:如果 matchedCount = 1 但 modifiedCount = 0,可能是因为:文档已经是最新的(你更新的内容与原来相同)或者更新操作未真正修改任何字段
public void updateDocById(String id){
// 根据id进行修改
Criteria criteria = Criteria.where("_id").is(id);
Query query = new Query();
query.addCriteria(criteria);
Update update = new Update();
// 修改名称为李四
update.set("name","李四");
UpdateResult result = mongoTemplate.updateFirst(query, update, User.class);
System.err.println(result);
}
7
删除文档数据

示例代码如下
public void removeDoc() {
// 创建条件对象
Criteria criteria = Criteria.where("name").is("张三");
// 创建查询对象,然后将条件对象添加到其中
Query query = new Query(criteria);
// 执行删除查找到的匹配的全部文档信息
DeleteResult result = mongoTemplate.remove(query, User.class);
// 输出结果信息
System.out.println(result);
}
8
查询文档数据






1234
因为文档数据没几条了效果出不来所以我又多加了100条 添加数据代码如下 如图1,也可以用inserall传集合 但是我没用 我这个在测试里面写的调用的接口大家别看错了 如图1所示
for (int i = 1; i <= 100; i++) {
// 男女
String gender = i % 2 == 0 ? "男" : "女";
// 添加
userService.insertDoc(new User(i + "", "张" + i, gender, i));
}
查询所有数据
如图2所示findAll会返回所有的文档数据 代码如下
public List<User> findUserList() {
return mongoTemplate.findAll(User.class);
}
分页查询文档数据
如图3图4所示find查询根据query设置分页参数 排序和筛选也是用qury 大致参考删除和修改文档数据
public List<User> findUserList(int page, int size) {
// 从第几条数据开始
int skip = (page - 1) * size;
// 每页多少个
int limit = size;
Query query = new Query().limit(limit).skip(skip);
List<User> list = mongoTemplate.find(query, User.class);
return list;
}
0
0
0
qq空间
微博
复制链接
分享 更多相关项目
猜你喜欢
评论/提问(已发布 0 条)
0