DBAtlas · Атлас эксплуатации баз данных

E11000: E11000: ошибка дублирующегося ключа в коллекции (duplicate key error)

MongoDB

Что это значит?

Вставка или обновление попытались записать в поле (поля), защищённые уникальным индексом, значение, которое уже существует в коллекции. MongoDB отклоняет дублирующийся ключ.

Почему возникает?

Коллизия _id, повторная запись того же значения в поле с уникальным индексом, состояние гонки при upsert или коллизия значений null у нескольких документов в уникальном индексе (не sparse-индекс).

Как исправить

Перед записью проверьте, существует ли документ, или используйте upsert: db.collection.updateOne(filter, {$set:{...}}, {upsert:true}). Посмотрите имя индекса и значение dup key в сообщении об ошибке. Если уникальность на самом деле не нужна, удалите индекс; если проблема в null, используйте частичный/sparse-индекс. В приложении перехватывайте ошибку и повторяйте операцию либо сообщайте о ней пользователю.

Открыть в DBAtlas →

Ещё по этой СУБД