qidao123.com技术社区-IT企服评测·应用市场
标题:
MongoDB 集合名称映射问题
[打印本页]
作者:
刘俊凯
时间:
2025-4-26 21:19
标题:
MongoDB 集合名称映射问题
项目场景
在使用 Spring Data MongoDB 举行开发时,界说了一个名为 CompetitionSignUpLog 的实体类,并创建了对应的 Repository 接口。必要明确该实体类在 MongoDB 中实际对应的集合名称是 CompetitionSignUpLog 还是 competitionSignUpLog。
问题描述
不确定 MongoDB 中主动天生的集合名称是基于实体类名称的哪种大小写形式:
CompetitionSignUpLog(首字母大写)
competitionSignUpLog(首字母小写)
这会影响直接通过 MongoDB shell 或其他客户端工具查询数据时的集合名称使用。
原因分析
Spring Data MongoDB 默认的集合名称天生规则如下:
通例情况
:将类名的第一个字母转换为小写
例如:CompetitionSignUpLog → competitionSignUpLog
特殊情况
:如果类名的前两个字母都是大写,则保持原样
例如:COMPETITIONSignUpLog → COMPETITIONSignUpLog
对于 CompetitionSignUpLog 类:
首字母 C 是大写,第二个字母 o 是小写
因此会应用通例规则,转换为首字母小写形式 competitionSignUpLog
办理方案
方案1:查察实际集合名称
直接连接到 MongoDB 数据库,查察主动天生的集合名称:
use your_database_name;
show collections;
复制代码
方案2:显式指定集合名称
在实体类上添加 @Document 注解明确指定集合名称:
import org.springframework.data.mongodb.core.mapping.Document;
@Document(collection = "competitionSignUpLog") // 明确指定集合名称
public class CompetitionSignUpLog {
// ... 类定义
}
复制代码
最佳实践发起
保举使用 @Document 显式指定集合名称,避免依靠默认规则
保持命名同等性:
Java 类名:CompetitionSignUpLog(首字母大写)
集合名称:competitionSignUpLog(首字母小写)
在 Repository 中无需关心实际集合名称,Spring Data 会主动处置惩罚映射关系
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 qidao123.com技术社区-IT企服评测·应用市场 (https://dis.qidao123.com/)
Powered by Discuz! X3.4