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