首页/数据/NoSQL 速查/唯一索引与重复键报错
MongoDB99 条

唯一索引与重复键报错

唯一索引阻止字段组合重复;写入冲突抛 E11000 duplicate key error,需要业务侧捕获并给出明确错因。

NoSQL 速查数据更新于 2026-10-12
单字段{ email: 1 } + unique: true
复合{ tenantId: 1, code: 1 } + unique: true
报错E11000 duplicate key error

示例

示例
db.users.createIndex({ email: 1 }, { unique: true })
db.users.insertOne({ email: "a@example.com" })
带唯一约束的集合插入前可用 findOne 先查一遍,减少异常路径;但并发下仍需捕获 E11000。

易错点

  • 缺失字段在唯一索引里按 null 处理,同一集合最多只允许一条缺失该字段的文档

数据来源与参考

  • MongoDB Manual: Unique Indexes
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌