MongoDB ObjectId


在前面學習的所有章節中,都有使用了MongoDB物件識別符號。 在本章中,我們將了解ObjectId的結構。

ObjectId 是具有以下結構的12位元組BSON型別 -

  • 4個位元組表示從unix紀元開始的秒數
  • 接下來的3個位元組是機器識別符號
  • 接下來的2個位元組由進程ID組成
  • 最後3個位元組是隨機計數器值

MongoDB使用ObjectIds作為每個文件的_id欄位的預設值,這是在建立任何文件時生成的。 ObjectId的複雜組合使得所有_id欄位都是唯一的。

>newObjectId = ObjectId()

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

ObjectId("595b99d9f6a6243715b3c312")

還可以提供一個12位元組的 id 來可代替 MongoDB 生成 ObjectId -

>myObjectId = ObjectId("595b99d9f6a6243715b3c312")

建立文件的時間戳

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

>ObjectId("595b99d9f6a6243715b3c312").getTimestamp()

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

> ObjectId("595b99d9f6a6243715b3c312").getTimestamp()
ISODate("2017-07-04T13:36:25Z")

將ObjectId轉換為String

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

>newObjectId.str

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

595b99d9f6a6243715b3c312