mongodb自定义字段_mongodb中自定义主键

关于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 。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值