MongoDB - ObjectId



在前面幾章中,我們一直在使用 MongoDB ObjectId。本章我們將瞭解 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")

建立文件的時間戳

由於預設情況下 _id ObjectId 儲存 4 位元組的時間戳,因此在大多數情況下,您不需要儲存任何文件的建立時間。您可以使用 getTimestamp 方法獲取文件的建立時間:

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

這將以 ISO 日期格式返回此文件的建立時間:

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

將 ObjectId 轉換為字串

在某些情況下,您可能需要以字串格式顯示 ObjectId 的值。要將 ObjectId 轉換為字串,請使用以下程式碼:

>newObjectId.str

以上程式碼將返回 Guid 的字串格式:

5349b4ddd2781d08c09890f3
廣告