关于mongodb中设置主键问题

默认主键

ObjectId 类似唯一主键,可以很快的去生成和排序,包含 12 bytes,含义是:

前 4 个字节表示创建 unix 时间戳,格林尼治时间 UTC 时间,比北京时间晚了 8 个小时
接下来的 3 个字节是机器标识码
紧接的两个字节由进程 id 组成 PID
最后三个字节是随机数

MongoDB 中存储的文档必须有一个 _id 键。这个键的值可以是任何类型的,默认是个 ObjectId 对象

由于 ObjectId 中保存了创建的时间戳,所以你不需要为你的文档保存时间戳字段,你可以通过 getTimestamp 函数来获取文档的创建时间:

通过注释【@Id】设置主键,如果不设置主键,mongoDB会自动生成主键。

@Document
@Data
public class InvoicesMsg {private String customerId;private String orderId;private String money;private String time;private String qmz;public InvoicesMsg(String customerId, String orderId, String money, String time, String qmz) {this.customerId = customerId;this.orderId = orderId;this.money = money;this.time = time;this.qmz = qmz;}
}

默认生成的数据

{"_id": ObjectId("5cb7d0b95de26915c1433160"),"customerId": "5c73830e54bbb01d1051ef7d","orderId": "0000000120190418090814000001","money": "550","time": "1555549694","qmz": "a1fbbb8fc0d0f2d93c218efc2cd2de517156e30f","date": "2019-04-18 09:19:53.396","_class": "com.example.btest.demo.bean.InvoicesMsg"
}

自定义主键

@Document
@Data
public class InvoicesMsg {public String id; //主键private String customerId;private String orderId;private String money;private String time;private String qmz;public InvoicesMsg(String customerId, String orderId, String money, String time, String qmz) {this.customerId = customerId;this.orderId = orderId;this.money = money;this.time = time;this.qmz = qmz;}
}

新增一条数据,给id设置值 “1122357” 作为主键

{"_id": "1122357","customerId": "00","orderId": "1122357","money": "10","time": "1878678818","qmz": "67d53fdccdf29a0686f3e351fe09d61340ea2c85","date": "2019-04-19 11:25:29.253","_class": "com.example.btest.demo.pojo.InvoicesMsg"
}

可以看到,主键值设为了 1122357 ,但是字段仍然是_id 。

mongod自定义主键相关推荐

  1. MyBatis主键回填和自定义主键

    MyBatis主键回填和自定义主键 1. 主键回填 JDBC中的Statement对象在执行插入的SQL后,可以通过getGeneratedKeys方法获得数据库生成的主键,这样便能达到获取主键的功能 ...

  2. rails 自定义主键_带有Rails 6 Webpacker和turbolink的自定义和第三方javascript指南

    rails 自定义主键 Ihave recently had the pleasure of updating our app from Rails 4 to Rails 6. Though it i ...

  3. MybatisPlus:SQL语句打印、SQL分析、自定义主键值策略填充(IdType.INPUT)、动态表名、多租户、枚举、类型处理器、连表自定义SQL(使用wrapper)

    文章目录 1. 简单使用以及配置 - 带分页配置 2. 用法 2.0 Wrapper属性 2.1 @TableId - 自定义主键生成策略 2.2 @TableField - 自定义字段值填充 2.3 ...

  4. java生成主键id,java自定义主键生成器

    1. 实体类代码 @Entity @Data @Table(name = "user") public class User implements Serializable { @ ...

  5. Mybatis使用SelectKey自定义主键

    SelectKey在Mybatis中是为了解决Insert数据时不支持主键自动生成的问题,他可以很随意的设置生成主键的方式. ① 属性 ① keyProperty : selectKey 语句结果应该 ...

  6. jdbc map获取keys_跟我学shardingjdbc之分布式主键及其自定义

    博客地址:朝·闻·道​www.wuwenliang.net本文是 "跟我学Sharding-JDBC" 系列的第三篇,我将带领读者一起了解下Sharding-JDBC的分布式主键, ...

  7. Hibernate各种主键生成策略与配置详解 - 真的很详细啊!!

    1.assigned 主键由外部程序负责生成,在 save() 之前必须指定一个.Hibernate不负责维护主键生成.与Hibernate和底层数据库都无关,可以跨数据库.在存储对象前,必须要使用主 ...

  8. hibernate之主键生成策略

    一.主键类型 1.自然主键(主键本身就是表中的一个字段,实体中一个具体的属性) 表中已经具有某字段,并且该字段具有业务含义作为主键,称之为自然主键. 例如:在person表中的身份证号,既是唯一的,又 ...

  9. 基于按annotation的hibernate主键生成策略

    这里讨论代理主键,业务主键(比如说复合键等)这里不讨论. 一.JPA通用策略生成器 通过annotation来映射hibernate实体的,基于annotation的hibernate主键标识为@Id ...

最新文章

  1. 刻意练习:Python基础 -- Task05. 函数与Lambda表达式
  2. (六) Docker 容器命令
  3. 《机器学习实战》第九章
  4. pymysql 增删改 查 索引
  5. 搜狗浏览器怎么实现图标旋转 搜狗浏览器实现图标旋转的方法
  6. 安装官方 Synaptics 驱动,终于解决 HP Pavilion G4 笔记本 讨厌的触摸板锁定问题!...
  7. Oracle查看表空间使用率SQL脚本
  8. 直播、线上办公、IoT需求井喷,Wi-Fi 6如何防止网络“塞车”?
  9. vijos1053 用spfa判断是否存在负环
  10. 华为hcip认证考试题库有哪些内容?华为hcip认证考试题库试题举例
  11. 教师计算机考核有啥用,教师计算机使用管理制度和考核方案
  12. FairyGUI笔记 :MovieClip(三)
  13. 无线鼠标插上去没反应
  14. app后端 服务器端 后台 部署图
  15. STM32 WinUSB(WCID)免驱高速通信 20M/s(附详细测试)
  16. Android实现 刮刮乐效果
  17. pes2017服务器维护时间,PES2017授权详情与球场数据包发布时间
  18. 如何从从U盘安装windows xp到EeePC的详细流程
  19. mysql查询学校开设总课程数_MYSQL数据库课程设计
  20. 【R 数据科学】R语言进行数据科学整理最有用的包大全

热门文章

  1. java毕业生设计中学后勤设备保修维护管理系统计算机源码+系统+mysql+调试部署+lw
  2. c 在线语言编译器,在线编译器(支持C,C++等较多语言)
  3. 中国电子驻车制动器行业市场研究与投资预测
  4. CV检测hu矩输出txt源码-DIY初稿
  5. 国密sm4 CBC加密模式的使用方法(兼容IE11)
  6. 朗强科技hdmi延长器系列战略产品重拳出击
  7. 学历造假、拖欠工资、核心技术归属存疑?AI 独角兽创始人遭质疑后回应!
  8. 艾司博讯:拼多多店铺权重提高的方法?
  9. CS:GO官方封禁超304000作弊帐号;任天堂疑似开发工具、源代码等机密数据泄露;Valorant上线全新处罚功能已修改
  10. 求四则运算的c语言程序,求c语言程序复述四则运算?