2013-08-03 20 views
17

根據此高度不完整列表http://www.mongodb.org/about/contributors/error-codes/它們都與重複鍵相關。但我無法獲得11001錯誤。下面的一切扔了11000錯誤:MongoDB錯誤代碼11000和11001之間的區別

  • 插入文檔與以前的
  • 插入文檔與重複字段,其中字段有一個複合唯一索引
  • 更新文檔與所述化合物的_id獨特索引

因此,這完全違背鏈接頁面,其中說11000是爲_id和11001會發生在更新(不插入)。

所以我的問題是:什麼時候11001發生?

+0

我找不到錯誤'11001'在https://github.com/mongodb/mongo/blob/master/src /mongo/base/error_codes.err並且該鏈接已死亡。這個問題是特定於mongo版本的嗎? – binki

回答

24

GitHub上的2.5/2.6分支中不存在代碼11001,所以如果您嘗試的是2.5版本,則無法創建它。我確實看了一下代碼,但是我找不到任何直接顯示11001代碼的路徑。

下面的幾行會顯示代碼11001

db.so.drop(); 
db.so.insert({ foo: 5 }); 
db.so.ensureIndex({ foo: 1 }, { unique: true }); 
db.so.insert({ foo: 6 }); 

預期11000

db.so.insert({ foo: 5 }); 
E11000 duplicate key error index: test.so.$foo_1 dup key: { : 5.0 } 

而現在達到11001

db.so.insert({ foo: 6 }); 
db.so.update({ foo: 6 }, { $set: { foo: 5 } }); 
E11000 duplicate key error index: test.so.$foo_1 dup key: { : 5.0 } 

仍然是原來的11000,但是:

db.getPrevError(); 
{ 
    "err" : "E11000 duplicate key error index: test.so.$foo_1 dup key: { : 5.0 }", 
    "code" : 11001, 
    "n" : 0, 
    "nPrev" : 1, 
    "ok" : 1 
} 

原來的文本錯誤信息顯示E11000是一個錯誤:https://jira.mongodb.org/browse/SERVER-5978

+0

哇,謝謝。我使用的是2.4.5,它實際上只是錯誤消息(我沒有使用'getPrevError')。你在源代碼中找不到任何'11001'這個事實是否意味着他們在2.4之後放棄它?你知道這個的任何來源(例如問題)嗎? – Prinzhorn

+0

不,我找不到這個問題,但我在該SERVER-5978問題上發表了評論。 – Derick

+1

感謝您的研究。我會繼續在我的客戶代碼中檢查「11000」和「11001」。 – Prinzhorn

相關問題