MongoDB ObjectId
MongoDB ObjectId
在前面幾個章節中我們已經使用了MongoDB 的物件 Id(ObjectId)。
在本章節中,我們將瞭解的ObjectId的結構。
ObjectId 是一個12位元組 BSON 型別資料,有以下格式:
- 前4個位元組表示時間戳
- 接下來的3個位元組是機器標識碼
- 緊接的兩個位元組由程序id組成(PID)
- 最後三個位元組是隨機數。
MongoDB中儲存的文件必須有一個"_id"鍵。這個鍵的值可以是任何型別的,預設是個ObjectId物件。
在一個集合裡面,每個文件都有唯一的"_id"值,來確保集合裡面每個文件都能被唯一標識。
MongoDB採用ObjectId,而不是其他比較常規的做法(比如自動增加的主鍵)的主要原因,因為在多個 伺服器上同步自動增加主鍵值既費力還費時。
建立新的ObjectId
使用以下程式碼生成新的ObjectId:
>newObjectId = ObjectId()
上面的語句返回以下唯一生成的id:
ObjectId("5349b4ddd2781d08c09890f3")
你也可以使用生成的id來取代MongoDB自動生成的ObjectId:
>myObjectId = ObjectId("5349b4ddd2781d08c09890f4")
建立文件的時間戳
由於 ObjectId 中儲存了 4 個位元組的時間戳,所以你不需要為你的文件儲存時間戳欄位,你可以通過 getTimestamp 函式來獲取文件的建立時間:
>ObjectId("5349b4ddd2781d08c09890f4").getTimestamp()
以上程式碼將返回 ISO 格式的文件建立時間:
ISODate("2014-04-12T21:49:17Z")
ObjectId 轉換為字串
在某些情況下,您可能需要將ObjectId轉換為字串格式。你可以使用下面的程式碼:
>new ObjectId().str
以上程式碼將返回Guid格式的字串::
5349b4ddd2781d08c09890f3