1. 程式人生 > 實用技巧 >關於MongoDB ObjectId的那些事兒

關於MongoDB ObjectId的那些事兒

ObjectId 是什麼?

一句話,ObjectId 是 MongoDB 文件 _id(主鍵)的預設型別。

ObjectId 的組成?

ObjectId 使用 12 位元組的儲存空間,是一個由 24 個十六進位制數字組成的字串 (每個位元組可以儲存兩個十六進位制數字)。

{
    "_id" : ObjectId("5e7dc34c416808cf7da6679d"),
    "name" : "小明",
    "sex" : "男"
}

時間戳:從標準紀元開始的時間戳,單位為秒

機器:所在主機的唯一識別符號,通常是機器主機名的雜湊值

PID:產生 ObjectId 的程序的程序識別符號

計數器:自動增加的計數器,確保相同程序同一秒產生的 ObjectId 不一樣

ObjectId 的那些事!

大致會按照插入的順序排列,僅僅是“大致”

由於時間戳在前面,所以 ObjectId 大致會按照插入的順序排列,但不是絕對的

由於儲存時間只精確到秒,同一機器,同一秒,不同程序生成的 ObjectId,PID小的會排在大的前面。

同一程序一秒內生成的 ObjectId 數量是有限的

由於計數器佔3個位元組,所以可以表示的數量為2^24

Reference

MongoDB權威指南(第2版)

關於MongoDB ObjectId,你應該知道的