1. 首页
  2. mongodb教程

43-四十三、MongoDB ObjectId

MongoDB ObjectId 用来标识集合中的唯一行

其实在前面几个章节中我们已经使用了 MongoDB ObjectId

本章节,我们将学习 ObjectId 的结构

ObjectId 是一个 12 字节 BSON 类型数据,由以下几部分组成

1、 前 4 个字节表示时间戳
2、 接下来的3个字节是机器标识码
3、 紧接的两个字节由进程 id 组成( PID
4、 最后三个字节是随机数
MongoDB 中存储的文档必须有一个 _id 键 这个键的值可以是任何类型的,默认是 ObjectId 对象

在一个集合里面,每个文档都有唯一的 _id 值,来确保集合里面每个文档都能被唯一标识

MongoDB 采用 ObjectId,而不是其他比较常规的做法(比如自动增加的主键)的主要原因,因为在多个 服务器上同步自动增加主键值既费力还费时

MongoDB 创建新的 ObjectId

下面的代码可以生成新的 ObjectId


> newid = ObjectId() ObjectId("59ef2598a0f7c7d445f864b3")

可以使用生成的 id 来取代 MongoDB 自动生成的 ObjectId

创建文档的时间戳

由于 ObjectId 中存储了 4 个字节的时间戳

所以我们不需要再为文档保存时间戳字段,因为可以通过 getTimestamp 函数来获取文档的创建时间


> ObjectId("59ef2598a0f7c7d445f864b3").getTimestamp() ISODate("2017-10-24T11:35:52Z")

ObjectId 转换为字符串

str 属性可以返回 ObjectId 的字符串格式


> ObjectId("59ef2598a0f7c7d445f864b3").str ef2598a0f7c7d445f864b3

希望读者能够给小编留言,也可以点击[此处扫下面二维码关注微信公众号](https://www.ycbbs.vip/?p=28 "此处扫下面二维码关注微信公众号")

看完两件小事

如果你觉得这篇文章对你挺有启发,我想请你帮我两个小忙:

  1. 关注我们的 GitHub 博客,让我们成为长期关系
  2. 把这篇文章分享给你的朋友 / 交流群,让更多的人看到,一起进步,一起成长!
  3. 关注公众号 「方志朋」,公众号后台回复「666」 免费领取我精心整理的进阶资源教程
  4. JS中文网,Javascriptc中文网是中国领先的新一代开发者社区和专业的技术媒体,一个帮助开发者成长的社区,是给开发者用的 Hacker News,技术文章由为你筛选出最优质的干货,其中包括:Android、iOS、前端、后端等方面的内容。目前已经覆盖和服务了超过 300 万开发者,你每天都可以在这里找到技术世界的头条内容。

    本文著作权归作者所有,如若转载,请注明出处

    转载请注明:文章转载自「 Java极客技术学习 」https://www.javajike.com

    标题:43-四十三、MongoDB ObjectId

    链接:https://www.javajike.com/article/1556.html

« 44-四十四、MongoDB Map Reduce
42-四十二、MongoDB 索引限制»

相关推荐

QR code