1
在使用MongoDB NodeJS驅動程序(甚至貓鼬)時,插入新文檔時,E11000
錯誤可能會返回,表明發生重複鍵衝突。MongoDB NodeJS驅動程序:重複鍵'E11000`提取索引名稱
如果我所插入收集有多個唯一索引,我想,以確定它們中的哪一個被擊中(例如通知用戶,他的用戶名和/或電子郵件地址已經被拍攝的用戶)?
這與一個碰撞索引插入文件以後提出的錯誤:
{
"name": "MongoError",
"message": "E11000 duplicate key error index: db.users.$_id_ dup key: { : \"blucell\" }",
"driver": true,
"index": 0,
"code": 11000,
"errmsg": "E11000 duplicate key error index: db.users.$_id_ dup key: { : \"blucell\" }"
}
引起問題的索引的唯一概念是消息,它隨時間變化(已蒙戈2之間不同英寸x和3.x)。
是否有更多的面向未來的/更容易檢查的哪個元素/索引造成衝突的方式是什麼?
爲什麼你就不能查詢,例如db.users.find({_ id:「blucell」}),然後嘗試插入文檔?您可以爲所有唯一索引字段執行此操作,而不僅僅是_id。如果有匹配,您將知道不要插入文檔,並可以通知用戶名或電子郵件已被使用。 –
是的,這是有效的,但它有很大的開銷,然後你必須照顧可能的數據競爭,這不會導致太多幹淨的代碼。我希望在那裏有更原生的解決方案 –