SpringBoot + MongoDB 5分钟快速集成:从0到1实操指南

目录

MongoDB‌

快速集成

常用API


MongoDB

MongoDB ‌ 是一个基于分布式文件存储的‌文档型数据库‌,属于 NoSQL 数据库中最接近关系型数据库的产品,旨在为 Web 应用提供高性能、高可用和可扩展的数据存储解决方案 。

MongoDB以灵活的无模式文档模型适配快速迭代的业务需求,通过分片与副本集实现海量数据的高可用存储与高性能读写,是处理非结构化、半结构化数据的理想选择。

它广泛应用于社交、游戏、物联网等场景,尤其擅长支撑数据量大、读写频繁、事务要求不高的业务,比如存储用户动态、游戏角色信息、设备日志等,还可借助地理位置索引实现LBS服务。

快速集成

pom

复制代码
    <!-- Spring Boot Starter Data MongoDB -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-mongodb</artifactId>
    </dependency>

application.yml配置

复制代码
spring:
  data:
    mongodb:
      uri: mongodb://username:password@localhost:27017/databaseName?replicaSet=mgset-youmgset

创建配置类**(可选)**

虽然Spring Boot的自动配置通常足以满足大多数需求,但有时你可能需要自定义配置。你可以创建一个配置类来配置MongoTemplate

复制代码
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.SimpleMongoClientDatabaseFactory;
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoClients;

@Configuration
public class MongoConfig {
    @Bean
    public MongoTemplate mongoTemplate() {
        MongoClient mongoClient = MongoClients.create("mongodb://username:password@localhost:27017/yourDatabaseName");
        return new MongoTemplate(new SimpleMongoClientDatabaseFactory(mongoClient, "yourDatabaseName"));
    }
}

注入MongoTemplate

复制代码
    @Autowired
    private MongoTemplate mongoTemplate;

常用API

实体示例

复制代码
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
@Document(collection = "Book")
@Data
public class Book {

    @Id
    private String id;
    private String title;
    private Date time;
    
    。。。
}

查询示例

复制代码
// 查询全部
List<Book> findAll = mongoTemplate.findAll(Book.class);

// 构建精确查询条件
Query query = new Query();
query.addCriteria(Criteria.where("name").is(name));
// 模糊查询
query.addCriteria(Criteria.where("author").regex(author, "i"));

// 设置分页
Pageable pageable = PageRequest.of(page, size, Sort.by("desc", "id"));
query.with(pageable);

// 执行查询
List<Book> books = mongoTemplate.find(query, Book.class);

// 获取总数
long total = mongoTemplate.count(query, Book.class);

根据ID查询

复制代码
mongoTemplate.findById(id,Book.class);

保存

复制代码
Book book = new Book();
book.set...
mongoTemplate.save(book);

删除

复制代码
Query query = new Query();
query.addCriteria(Criteria.where("_id").is(Id));
mongoTemplate.remove(query, Book.class);

范围查询

复制代码
Criteria criteria = Criteria.where("age").gte(18).and("age").lte(65);
query.addCriteria(criteria);

等价于 MongoDB 查询:
{ age: { $gte: 18, $lte: 65 } }

修改

复制代码
Query query = new Query();
query.addCriteria(Criteria.where("_id").is(id));

Update update = new Update();
update.pull("tags", tag);
        
mongoTemplate.updateFirst(query, update, Book.class);

到此常用的增删改查就完成了

相关推荐
Rubin智造社14 小时前
Claude Code开发者大会系列2|“饮鸩止渴”还是“即刻解药”?Anthropic与SpaceX的联姻内幕
大数据·数据库·人工智能·开发者大会·anthropic·claude code
噢,我明白了14 小时前
表单的完整 CRUD 练习【极简个人记账本】(含前端后端链接mySQL)
java·前端·数据库·mysql
通往曙光的路上14 小时前
mysql1
java
2301_8092047016 小时前
bootstrap怎么实现鼠标悬停切换图片预览功能
jvm·数据库·python
Tigshop开源商城18 小时前
『物流设置+SEO优化』Tigshop开源商城系统 JAVA v5.8.26 版本更新!
java·开源商城系统·tigshop
小短腿的代码世界20 小时前
Qt 股票订单撮合引擎:高频交易系统的核心心脏
开发语言·数据库·qt·系统架构·交互
Tigshop开源商城20 小时前
『订单税率+收货地址校验国家字段』功能上新|跨境运营更高效,Tigshop开源商城系统 JAVA v5.8.23 版本更新
java·开源商城系统·tigshop
养肥胖虎20 小时前
Docker学习笔记:后端、数据库和反向代理怎么一起跑起来
后端·nginx·docker·postgresql·go·部署
REDcker20 小时前
C++变量存储与ELF段布局详解 从const全局到rodata与nm_readelf验证实践
java·c++·面试
晓杰'21 小时前
从0到1实现 Balatro 游戏后端(2):NestJS框架搭建与项目结构设计
后端·websocket·typescript·node.js·游戏开发·项目实战·nestjs