位置:首頁 > 數據庫 > MongoDB教學 > MongoDB ObjectId

MongoDB ObjectId

我們一直在使用MongoDB的對象ID在所有前麵的章節。在本章中,我們將來理解ObjectId的結構。

ObjectId 具有一個12字節的BSON類型的結構,如下:

  • 前4個字節,從Unix紀元以來表示秒
  • 接下來的3個字節是機器標識
  • 接下來的2個字節進程ID組成
  • 最後的3個字節是一個隨機計數器值

MongoDB使用ObjectID作為_id字段的缺省值,為創建各文檔生成在各文檔。ObjectId的複雜組合,使所有的_id字段都是唯一的。

創建新的ObjectId

要生成一個新的ObjectId,使用下麵的代碼:

>newObjectId = ObjectId()

上麵的語句返回唯一生成的ID,如下:

ObjectId("5349b4ddd2781d08c09890f3")

取而代之,MongoDB產生ObjectId,你也可以提供一個12字節的ID:

>myObjectId = ObjectId("5349b4ddd2781d08c09890f4")

文檔創建的時間戳

在默認情況下,ObjectId的_id存儲4字節的時間戳,在大多數情況下,並不需要存儲任何文檔的創建時間。 您可以使用方法getTimestamp獲取一個文檔的創建時間:

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

這將返回ISO日期格式,也就是這個文檔的創建時間:

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

轉換ObjectId為String

在某些情況下,可能需要將ObjectId的值轉換成字符串格式。 要轉換ObjectId為字符串,請使用下麵的代碼:

>newObjectId.str

上麵的代碼將返回GUID的字符串格式:

5349b4ddd2781d08c09890f3