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