2016-04-26 91 views
0

爲什麼我遇到錯誤'重複鍵'?其實,我已經添加了下面一行在我的代碼:Mongo :: Error :: OperationFailure:E11000重複鍵錯誤集合:metalab_development.demands索引:sn_1 dup鍵:{:null}(11000)

index({ sn: 1 }, { unique: true, sparse: true}) 

然後我鍵入命令:

rake db:mongoid:create_indexes 

錯誤出現了,這讓我困惑。

+0

刪除唯一的語句這個命令拋出異常唯一的手段不運動重複,但稀疏意味着索引字段中的運動重複字段 –

回答

0

錯誤指出您的集合中有重複鍵的文檔。這是由於您的索引要求它們是該密鑰的唯一記錄。

如果你不需要獨特的記錄:刪除獨特:由該聲明屬實

如果您確實需要獨特的記錄:搜索與重複鍵的文件和更新這些稀疏

的說明,它意味着它只會索引如果密鑰文件中存在,而忽略文檔不具備關鍵sparse docs

更新:

我f我正在讀取錯誤,重複鍵可能爲'null'。由於您使用的是稀疏的,所以如果您當前條目爲空的字段爲unset,那麼您的索引應該可以工作。

+0

我在數據庫中插入新數據,但其中一些已經存在,所以我得到這個錯誤,我正在做批處理插入,我怎麼能忽略這個?如果我把異常處理程序,然後它插入一些數據和一些數據剩下 – user1735921

+0

你想重複發生什麼?你有幾個選擇。在您的異常處理程序中,您可以使用新數據更新現有文檔,或者更改您希望插入的文檔的關鍵字,使其與現有文檔不衝突。 – ABrowne