Spring Data MongoDB 精华:给新手的核心注解指南
目录
- 引言:超越基础 Repository 方法
- 基础:Repository 设置与基本映射
- 2.1
@Repository
与MongoRepository
(回顾) - 2.2
@Document
:将类映射到集合 - 2.3
@Id
:标识文档主键 - 2.4
@Field
:映射 Java 字段到文档字段
- 2.1
- 使用
@Query
进行自定义查询- 3.1 定义查询 (
value
) - 3.2 使用参数 (
?n
占位符) - 3.3 选择特定字段 (
fields
- 投影)
- 3.1 定义查询 (
- 使用
@Update
进行自定义更新- 4.1 结合
@Query
与@Update
- 4.2 使用更新操作符 (如
$set
)
- 4.1 结合
- 使用
@Delete
进行自定义删除- 5.1 结合
@Query
与@Delete
- 5.2 返回值
- 5.3 为何没有
@Insert
注解?
- 5.1 结合
- 使用索引优化性能
- 6.1 为何需要索引?
- 6.2
@Indexed
:简单字段索引 - 6.3
@CompoundIndex
:多字段复合索引
- 其他对新手有用的注解
- 7.1
@Transient
:忽略字段 - 7.2
@Version
:乐观锁处理并发 - 7.3 基本审计 (
@CreatedDate
,@LastModifiedDate
) - 7.4 处理关系 (简介:
@DBRef
vs 手动存 ID)
- 7.1
- 最佳实践与优先级
- 核心要点:全面总结
- 结语
1. 引言:超越基础 Repository 方法
欢迎!当你开始在 Spring Boot 中使用 MongoDB 时,你会很快体会到 MongoRepository
的便利——它提供了基本的增删改查 (CRUD) 操作和简单的查找方法(如 findByUsername(...)
)。这被称为方法名衍生查询 (method name derived queries)。
然而,现实世界的应用常常需要更复杂的查询、特定的更新逻辑或性能调优。这时,注解就派上用场了!本指南将带你了解最常用和最核心的 Spring Data MongoDB 注解,这些是在基础之上的进阶。我将专注于作为新手你真正需要了解的内容。
2. 基础:Repository 设置与基本映射
在深入自定义操作之前,让我们快速回顾一下必要的设置和映射注解。
2.1 @Repository
与 MongoRepository
(回顾)
@Repository
:一个 Spring 注解,标记这个接口是一个数据访问对象 (DAO) Bean,使其能被 Spring 管理。MongoRepository<EntityType, IdType>
:你需要继承的 Spring Data MongoDB 接口。它开箱即用地提供了一套标准的 CRUD 方法。EntityType
:代表 MongoDB 文档的 Java 类(例如User
)。IdType
:文档主键 (_id
) 的数据类型,通常是String
或ObjectId
。
import org.springframework.data.mongodb.repository.MongoRepository;
import org.springframework.stereotype.Repository;
import com.yourproject.model.User; // 你的实体类@Repository
public interface UserRepository extends MongoRepository<User, String> {// 内建方法: save(), findById(), findAll(), deleteById(), 等等。// 方法名衍生查询:User findByEmail(String email);
}
2.2 @Document
:将类映射到集合
这个注解放在你的实体类上,告诉 Spring Data MongoDB 这个类映射到 MongoDB 的哪个集合。
collection
:(可选)指定 MongoDB 集合的确切名称。如果省略,默认使用类名首字母小写形式(例如User
类 ->user
集合)。
import org.springframework.data.mongodb.core.mapping.Document;