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

如何解决MongoServerError: E11000重复键错误?附Schema代码

解决MongoServerError: E11000 重复键错误

错误原因

  1. status字段的唯一约束逻辑错误:你给status字段设置了unique: true,且默认值为true(MongoDB会自动将布尔值转为字符串"true"),这意味着整个test.admins集合中只能存在一个status为"true"的文档,插入第二个文档时直接触发重复键冲突。
  2. password字段的唯一约束冗余:password字段设置unique: true完全不合理——不同用户可能使用相同密码(哪怕是bcrypt加密后的哈希值也存在极小概率重复),这会导致正常用户注册失败。

修正后的Schema代码

const adminSchema = new mongoose.Schema({
  name: { type: String, unique: true, required: true },
  email: { type: String, unique: true, required: true },
  userName: { type: String, unique: true, required: true },
  password: { type: String, required: true }, // 移除不必要的unique约束
  status: { type: String, default: "true" } // 移除unique约束,同时将默认值改为字符串类型,与字段定义统一
}, { timestamps: true })

后续操作

修改Schema后,需要手动删除MongoDB中已存在的status_1唯一索引(Schema修改不会自动删除已创建的索引),可以通过MongoDB Shell执行:

db.admins.dropIndex("status_1")

完成后重启服务,即可正常插入多个文档。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 13:50:45