MongoDB的文檔必須有一個_id鍵。
目的是為了確認在集合里的每個文檔都能被唯一標識。
ObjectId 是 _id 的默認類型。
ObjectId 采用12字節的存儲空間,每個字節兩位16進制數字,是一個24位的字符串。
12位生成規則:
[0,1,2,3] [4,5,6] [7,8] [9,10,11]
時間戳 |機器碼 |PID |計數器
-
前四字節是時間戳,可以提供秒級別的唯一性。
-
接下來三字節是所在主機的唯一標識符,通常是機器主機名的散列值。
-
接下來兩字節是產生ObjectId的PID,確保同一台機器上並發產生的ObjectId是唯一的。
前九字節保證了同一秒鍾不同機器的不同進程產生的ObjectId時唯一的。
- 最后三字節是自增計數器,確保相同進程同一秒鍾產生的ObjectId是唯一的。
由此可得,在對數據庫數據進行排序時,可以直接更具_id來進行排序(因為生成規則前四字節是時間戳,有秒級的唯一性)