DBAtlas · データベース運用アトラス

E11000: E11000 duplicate key error collection(E11000 重複キーエラー)

MongoDB

意味

挿入または更新で、一意インデックスで保護されたフィールドに、コレクション内にすでに存在する値を書き込もうとした。MongoDB は重複キーを拒否する。

原因

_id の衝突、一意インデックスを持つフィールドへの同じ値の再書き込み、upsert 中の競合状態、または一意インデックス (非 sparse インデックス) で複数ドキュメントの null 値が衝突。

対処方法

書き込み前にドキュメントの存在を確認するか、upsert を使う: db.collection.updateOne(filter, {$set:{...}}, {upsert:true})。エラーメッセージのインデックス名と dup key の値を確認する。一意性が実際には不要ならインデックスを削除する。null が問題なら partial/sparse インデックスを使う。アプリケーションではエラーを捕捉して再試行するか、ユーザーに通知する。

DBAtlas で開く →

同じデータベースの他の項目