關於MongoDB ObjectId的那些事兒
阿新 • • 發佈:2020-08-02
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版)