前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MongoDB-_id字段的含义介绍

MongoDB-_id字段的含义介绍

作者头像
小博测试成长之路
发布2022-12-02 15:08:14
8220
发布2022-12-02 15:08:14
举报
文章被收录于专栏:软件测试学习软件测试学习

MongoDB中的主键无需明确指定,每一条记录被添加到集合之后, MongoDB都会自动添加主键,MongoDB中文档主键的名称叫做 _id,是一个ObjectId类型的数据,格式如下:

代码语言:javascript
复制
study> db.user.find()
[ { _id: ObjectId("62c44b4d5604b99daa91103e"), name: '小博' } ]

数一下_id这个字段的长度,我们发现一共有24位,我们将_id字段的内容拆分成4部分去分别看其对应的含义:

62c44b4d 5604b9 9daa 91103e

1-8位字符:插入数据的时候对应的时间戳

9-14位字符:代表主机的唯一标识符,一般是机器主机名的散列值。具体这个值怎么来的,我目前也没有摸清楚

15-18位字符:产生ObjectId的PID

19-24位:计数器

插入两条数据,然后检查下对应某些位数的值是否一致:

代码语言:javascript
复制
db.getCollection("user").insert({
    "name": "张三",
    "age": 28,
    "height": 180
})

db.getCollection("user").insert({
    "name": "李四",
    "age": 29,
    "height": 178
})

查看数据库里面的数据:

以_id = 62c6fdb6e3a9741ea11d9883为例,1-8位为62c6fdb6,将16进制转换为1657208246,这个就是对应的数据插入的时间,转换为时间格式后为:

_id字段虽然为系统自动生成的一个唯一标识,但是,用户也可以自定义这个id的值:

代码语言:javascript
复制
db.getCollection("user").insert({
    "_id":"1", 
   "name": "大刀王五",
    "age": 29,
    "height": 178
})

插入之后的效果:

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-07-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小博测试成长之路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 MongoDB
腾讯云数据库 MongoDB(TencentDB for MongoDB)是腾讯云基于全球广受欢迎的 MongoDB 打造的高性能 NoSQL 数据库,100%完全兼容 MongoDB 协议,支持跨文档事务,提供稳定丰富的监控管理,弹性可扩展、自动容灾,适用于文档型数据库场景,您无需自建灾备体系及控制管理系统。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档