1. 程式人生 > >mongo出現重複_id ,Duplicate documents on _id (in mongo)

mongo出現重複_id ,Duplicate documents on _id (in mongo)

生產的問題:

  發現mongodb中collectionA,裡面_id 重複。重複的兩條資料,除了xx欄位不一樣,其他都差不多。

  正常情況_id是能保證唯一的,是mongodb自動生成的。

 

原因:

xx 欄位是片健,資料存入collectionA時,按照xx先進行分片,存到不同的區中。

程式: 先判斷業務id是否存在,存在獲取_id,然後根據_id 更新。不存在,就插入,_id自動生成

第一次: 不存在,插入 ,資料一條正確

第二次:存在,更新,通過業務id獲取_id,通過_id更新。可是xx欄位值改變,而xx作為片健,因為值改變了,所以被分片到另一個區,而新的去沒有這個_id,所以插入了一條新的,而_id 是原來的

 

解決:

 片健選擇

1> 片健的值能標識一個業務單子的唯一性,一個單子這個組合或者單個作為片健的,值不能變

2> 片健必填

提醒:

建片健,有個引數 {unique: true},標識唯一性,這樣更加可以限制了重複問題