0
如果兩個客戶端使用一個MongoDB實例在沒有«forceServerObjectId:true»的情況下同時執行和插入操作,會發生什麼?是否有可能生成相同的ObjectIDs,是否可能存在衝突?並行插入到MongoDB中
如果兩個客戶端使用一個MongoDB實例在沒有«forceServerObjectId:true»的情況下同時執行和插入操作,會發生什麼?是否有可能生成相同的ObjectIDs,是否可能存在衝突?並行插入到MongoDB中
在每個集合的_id字段上都有一個隱含的唯一索引,這使得具有相同_id的兩個對象不可能存在於同一個集合中。
當兩個具有相同_id值的對象與collection.save
一起存儲時,一個文檔將替換另一個。
將它們與collection.insert
一起存儲時,其中一個插入操作將失敗並出現重複鍵錯誤。
但請注意,MongoDB ObjectIDs包括一個24位機器ID。這使得兩個客戶機不可能生成相同的ID,除非它們具有相同的機器ID。即使這樣也不太可能。當然,這隻適用於讓MongoDB驅動程序(或shell)自動生成ObjectID的情況。當您手動設置時,MongoDB允許使用任何類型的任何值作爲_id字段的值。當你這樣做時(你不應該),確保唯一性是你的責任。