MongoDB 集合名称映射问题

打印 上一主题 下一主题

主题 1920|帖子 1920|积分 5764

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
项目场景

在使用 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 数据库,查察主动天生的集合名称:
  1. use your_database_name;
  2. show collections;
复制代码
方案2:显式指定集合名称

在实体类上添加 @Document 注解明确指定集合名称:
  1. import org.springframework.data.mongodb.core.mapping.Document;
  2. @Document(collection = "competitionSignUpLog") // 明确指定集合名称
  3. public class CompetitionSignUpLog {
  4.     // ... 类定义
  5. }
复制代码
最佳实践发起

   保举使用 @Document 显式指定集合名称,避免依靠默认规则
  保持命名同等性:
  Java 类名:CompetitionSignUpLog(首字母大写)
  集合名称:competitionSignUpLog(首字母小写)
  在 Repository 中无需关心实际集合名称,Spring Data 会主动处置惩罚映射关系

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

刘俊凯

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表