MongoDB ObjectId

在前面的章節(jié)中,我們一直在使用MongoDB對象Id。在本章中,我們將了解ObjectId的結(jié)構(gòu)。

ObjectId 是一個(gè)12字節(jié)的 BSON 類型,具有以下結(jié)構(gòu)-

  • 前4個(gè)字節(jié)表示自 unix 新紀(jì)元以來的秒數(shù)

  • 接下來的3個(gè)字節(jié)是機(jī)器標(biāo)識符

  • 接下來的2個(gè)字節(jié)由進(jìn)程 id 組成

  • 最后3個(gè)字節(jié)是一個(gè)隨機(jī)計(jì)數(shù)器值

MongoDB使用ObjectIds作為_id每個(gè)文檔字段的默認(rèn)值,該默認(rèn)值是在創(chuàng)建任何文檔時(shí)生成的。ObjectId的復(fù)雜組合使所有_id字段唯一。

創(chuàng)建新的ObjectId

要生成新的ObjectId,請使用以下代碼-

>newObjectId = ObjectId()

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

ObjectId("5349b4ddd2781d08c09890f3")

除了提供MongoDB生成ObjectId之外,您還可以提供12字節(jié)的ID-

>myObjectId = ObjectId("5349b4ddd2781d08c09890f4")

創(chuàng)建文檔的時(shí)間戳

由于_id ObjectId默認(rèn)情況下存儲4字節(jié)的時(shí)間戳,因此在大多數(shù)情況下,您不需要存儲任何文檔的創(chuàng)建時(shí)間。您可以使用getTimestamp方法獲取文檔的創(chuàng)建時(shí)間-

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

這將以ISO日期格式返回此文檔的創(chuàng)建時(shí)間-

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

將ObjectId轉(zhuǎn)換為String

在某些情況下,您可能需要字符串格式的ObjectId值。要以字符串形式轉(zhuǎn)換ObjectId,請使用以下代碼-

>newObjectId.str

上面的代碼將返回Guid的字符串格式-

5349b4ddd2781d08c09890f3
丰满人妻一级特黄a大片,午夜无码免费福利一级,欧美亚洲精品在线,国产婷婷成人久久Av免费高清