mongorestore的--nsInclude参数不生效,仍还原备份内全部集合
问题根因
你遇到的现象不是工具Bug,是两个隐含逻辑共同导致的:
- 你观察到的
--db弃用警告并非误报:你在连接URI末尾指定了/myns数据库路径,这在mongorestore中等价于隐式传递了--db myns参数,因此触发了弃用提示,和你有没有显式写--db参数无关。 --nsInclude过滤失效的核心原因:当mongorestore检测到显式/隐式的--db参数时,全库还原的优先级会高于命名空间过滤规则,直接覆盖了你设置的单集合过滤逻辑,最终导致备份内所有集合都被还原。
解决方法
调整你的mongorestore命令,移除URI中末尾的数据库名即可,修改后的命令如下:
mongorestore --nsInclude=myns.mycollection --uri mongodb://user:pass@mongo/?authSource=admin --gzip --drop --preserveUUID --archive="/data/backups/myns/myns.bson.gz"
修改后mongorestore不会再隐式触发--db逻辑,--nsInclude的过滤规则会正常生效,仅还原你指定的myns.mycollection集合。
补充说明
如果需要将备份集合恢复到其他目标库,可以搭配--nsFrom和--nsTo参数做命名空间映射,无需修改备份文件。建议确保mongorestore工具版本和MongoDB服务端版本差不超过1个小版本,避免出现兼容问题。
内容的提问来源于stack exchange,提问作者Jeff R
相关产品推荐
相关产品推荐

