当前位置: 首页 > news >正文

MongoDB ObjectId

本节我们来介绍一下 MongoDB 中的 ObjectId 的组成,ObjectId 是一个 12 字节的 BSON 类型,具有以下结构:

  • 前 4 个字节表示时间戳;
  • 接下来的 3 个字节表示机器标识符;
  • 紧接着的 2 个字节由进程 id(PID)组成;
  • 最后 3 个字节是一个随机计数器的值。


MongoDB 使用 ObjectId 作为每个文档 _id 字段的默认值,而且该值可以在创建文档时自动生成。ObjectId 的复杂组合方式使得所有的 id 字段都是唯一的。

创建新的 ObjectId

要生成一个新的 ObjectId,可以使用下面的代码:

> newObjectId = ObjectId()

执行上面的语句,会生成一个唯一的 _id,如下所示:

ObjectId("6040966d8bafb296d166fe47")

除了可以使用 MongoDB 自动生成的 ObjectId 外,您也可以手动提供一个 12 字节的 ID,如下所示:

> myObjectId = ObjectId("6040966d8bafb296d166fe50")
ObjectId("6040966d8bafb296d166fe50")

创建文档的时间戳

由于 ObjectId(_id)中默认存储了 4 个字节的时间戳,因此在大多数情况下,您再不需要单独存储任何文档的创建时间,只要使用 getTimestamp() 方法就可以获取文档的创建时间,getTimestamp() 方法可以使用 ISO 格式返回 ObjectId 中包含的时间,如下所示:

> ObjectId("6040966d8bafb296d166fe50").getTimestamp()
ISODate("2021-03-04T08:12:29Z")

将 ObjectId 转换为 String

在某些情况下,您可能需要将 ObjectId 的值转换为字符串格式。要将 ObjectId 转换为字符串,可以使用以下代码:

> newObjectId.str

上面的代码将返回 Guid 的字符串格式:

604099da8bafb296d166fe48

相关文章:

  • 分布式锁原理及Redis如何实现分布式锁
  • buctoj-2023寒假集训-进阶训练赛(十六)
  • 辨别三星内存条的真假
  • 数据结构 - 树和二叉树
  • 【C++之类和对象】初识类和对象
  • React(一) —— 组件的创建与state
  • mysql-视图的定义和简单使用
  • PTA L1-027 出租(详解)
  • XXE漏洞常见利用点总结
  • 让你深夜emo的“网抑云”,是如何做产品设计的?
  • Codeforces Round #848 (Div. 2) D - Flexible String Revisit
  • 「题解」字符串中的所有单词进行倒排
  • 关于符合车规的高精度定位产品
  • 【Linux】基础网络编程
  • torch_geometric--Convolutional Layers
  • Java——OpenJDK和JDK的区别
  • Windows实时运动控制软核(六):LOCAL高速接口测试之Matlab
  • 下一代编解码技术Ali266在视频超高清领域的应用展望
  • 【K8S之调度器流程和扩展】如何给 scheduler 添加扩展插件、关闭默认插件、创建多个 scheduler?
  • kob配置git环境与项目创建
  • 电加热油锅炉工作原理_电加热导油
  • 大型电蒸汽锅炉_工业电阻炉
  • 燃气蒸汽锅炉的分类_大连生物质蒸汽锅炉
  • 天津市维修锅炉_锅炉汽化处理方法
  • 蒸汽汽锅炉厂家_延安锅炉厂家
  • 山西热水锅炉厂家_酒店热水 锅炉
  • 蒸汽锅炉生产厂家_燃油蒸汽发生器
  • 燃煤锅炉烧热水_张家口 淘汰取缔燃煤锅炉
  • 生物质锅炉_炉
  • 锅炉天然气_天燃气热风炉