目录
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);
到此常用的增删改查就完成了