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

MongoDB执行mongorestore恢复备份时出现E11000 _id_重复键错误如何解决

错误根因

你遇到的E11000重复键报错核心原因是mongorestore参数优先级冲突:

  • 你在恢复命令的URI末尾指定了/DATABASE_NAME,该参数的优先级高于--nsFrom/--nsTo的命名空间映射规则,导致恢复操作没有写入你预期的DATABASE_NAME_COPY库,反而直接尝试写入已有数据的原库DATABASE_NAME,相同_id的文档触发唯一键约束报错。
  • 报错日志里的restoring to existing collection DATABASE_NAME.admins without dropping也已经明确验证了这一点:恢复操作的目标集合是原库的admins,而非目标拷贝库的集合。

解决方案

你可以选择以下任意一种修正后的恢复命令执行即可:

方案1:使用命名空间映射(和你原本的用法逻辑一致)

移除URI末尾的原库名,让--nsFrom/--nsTo规则生效:

mongorestore --uri 'mongodb+srv://ACCOUNT_NAME:PASSWORD@cluster0.fklgt.mongodb.net' --archive="DATABASE_DUMP" --nsFrom='DATABASE_NAME.*' --nsTo='DATABASE_NAME_COPY.*'

方案2:直接指定目标库(更简洁)

不需要命名空间映射参数,直接在URI里指定目标拷贝库,同时指定要导入的原库集合:

mongorestore --uri 'mongodb+srv://ACCOUNT_NAME:PASSWORD@cluster0.fklgt.mongodb.net/DATABASE_NAME_COPY' --archive="DATABASE_DUMP" --nsInclude='DATABASE_NAME.*'

可选补充

如果目标DATABASE_NAME_COPY库已经存在残留数据,你可以在上述命令末尾添加--drop参数,恢复前会先删除目标库对应的集合,避免其他数据冲突。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 20:54:05