You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MongoDB E11000重复键错误求助:二次提交创建文档失败

解决MongoError: E11000重复键错误(questionNumber为null)

问题背景

首次创建提交文档正常,第二次触发E11000重复键错误,错误信息如下:

MongoError: E11000 duplicate key error collection: test.submissions index:
submissions.questionNumber_1 dup key: { submissions.questionNumber: null }
...
keyPattern: { 'submissions.questionNumber': 1 },
  keyValue: { 'submissions.questionNumber': null }
}

当前使用的Schema中questionNumber已设为必填,但仍出现该问题。

原因分析

虽然当前Schema未给questionNumber添加unique约束,但MongoDB数据库中残留了之前创建的questionNumber唯一索引。当某次请求中questionNumber意外为null(比如参数传递错误、变量未赋值),会写入一个questionNumber为null的文档;后续再出现null值时,唯一索引会拦截操作,抛出重复键错误。

解决步骤

  • 检查集合索引
    打开MongoDB Shell,执行命令查看test.submissions集合的所有索引:

    use test
    db.submissions.getIndexes()
    

    你会看到包含submissions.questionNumber_1的唯一索引条目。

  • 删除残留的唯一索引
    执行命令删除该索引(替换为getIndexes()返回的实际索引名):

    db.submissions.dropIndex("submissions.questionNumber_1")
    
  • 验证修复效果
    重新执行创建提交的代码,确认错误不再触发。

  • 额外排查
    检查业务代码中questionNumber变量的赋值逻辑,确保每次调用Submission.create时,该参数都有合法的非空值,避免因参数缺失导致的null写入。

内容的提问来源于stack exchange,提问作者OG_On_The_Beat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 17:12:36