English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

ObjectId في MongoDB

在前面的章节中,我们一直在使用MongoDB对象Id。在本章中,我们将了解ObjectId的结构。

ObjectId是一个12字节的BSON类型,具有以下结构-

  • 前4个字节表示自 unix 新纪元以来的秒数

  • 接下来的3个字节是机器标识符

  • 接下来的2个字节由进程 id 组成

  • 最后3个字节是一个随机计数器值

MongoDB使用ObjectIds作为_id每个文档字段的默认值,该默认值是在创建任何文档时生成的。ObjectId的复杂组合使所有_id字段唯一。

创建新的ObjectId

要生成新的ObjectId,请使用以下代码-

newObjectId = ObjectId()

上面的语句返回以下唯一生成的id-

ObjectId("5349b4ddd2781d08c09890f3")

除了提供MongoDB生成ObjectId之外,您还可以提供12字节的ID-

myObjectId = ObjectId("5349b4ddd2781d08c09890f4")

التوقيت الذي تم إنشاء المستند فيه

بسبب أن ObjectId يتم تخزينه كتوقيت 4 بتافات بالافتراض، لذا في معظم الحالات، لا تحتاج إلى تخزين تاريخ إنشاء المستند. يمكنك استخدام getTimestamp لتحديد تاريخ إنشاء المستند-

>ObjectId("5349b4ddd2781d08c09890f4").getTimestamp()

سيقوم هذا بتحويل تاريخ إنشاء المستند إلى شكل تاريخ ISO-

ISODate("2014-04-12T21:49:17Z")

تحويل ObjectId إلى String

في بعض الحالات، قد تحتاج إلى ObjectId قيمته نصية. لتحويل ObjectId إلى شكل نصي، استخدم التالي-

>newObjectId.str

الكود أعلاه سيقوم بتحويل Guid إلى شكل نصي-

5349b4ddd2781d08c09890f3