MongoDB 教學課程login
MongoDB 教學課程
作者:php.cn  更新時間:2022-04-21 17:49:03

MongoDB 物件 ID



在前面幾個章節我們已經使用了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

PHP中文網