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


猫拾柒
原创
发布时间: 2025-12-06 19:48:57 | 阅读数 0收藏数 0评论数 0
封面
本文讲解了如何在 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

集合索引


创建集合代码如下 效果如图所示

public void createCollection(String name) {
mongoTemplate.createCollection(name);
boolean result = mongoTemplate.collectionExists(name);
System.out.println(result ? "成功" : "失败");

}


5

新增文档数据

示例代码如下,如图1所示他会返回新增成功后的数据,也就是说明如果我们不给他分配id他就会返回mongdb自动生成的id 如图2所示


public void insertDoc(User user) {
User result = mongoTemplate.insert(user);
System.err.println(result);
}


6

修改文档数据

示例代码如下 效果如图所示

返回结果 :

  1. matchedCount = 1 代表有一条数据符合结果
  2. modifiedCount = 1 代表实际有 1 条文档被修改了内容
  3. 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

查询文档数据

因为文档数据没几条了效果出不来所以我又多加了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
禁止 本文未经作者允许授权,禁止转载
猜你喜欢
评论/提问(已发布 0 条)
评论 评论
收藏 收藏
分享 分享
pdf下载 下载
pdf下载 举报