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

咨询mongorestore使用/不使用-d参数时预期的文件与目录类型

让我帮你把mongorestore的输入逻辑理清楚,结合你的备份目录结构来拆解就好懂多了:

1. 不使用-d参数时的预期输入

当你不带-d执行命令时,mongorestore默认是要恢复整个备份集里的所有数据库,所以它期望你提供的是一个「包含多个数据库子目录的根目录」。

比如你的备份结构里,dump目录下面有mydb1、mydb2、mydb3这三个数据库的子目录,这个dump就是符合要求的根目录。这也是为什么你在mydirectory下直接执行mongorestore能成功——因为命令会自动查找当前目录下的dump子目录作为默认根目录。

你之前在mydirectory/dump下执行mongorestore mydb1报错,问题就出在这里:mongorestore把mydb1当成了要找的「备份根目录」,但打开后发现里面不是数据库子目录,而是schemas.bson这类集合文件,它不知道该怎么处理这些文件,所以就跳过了。

2. 使用-d参数时的预期输入

-d参数的作用是明确指定要恢复到的目标数据库名,这时候mongorestore的逻辑就变了:它期望你提供的是一个「单个数据库的备份目录」——也就是像mydb1、mydb2这种包含该数据库所有集合文件(.bson和.metadata.json)的目录。

举几个符合要求的例子:

  • 把mydb1恢复到同名数据库:在mydirectory/dump下执行 mongorestore -d mydb1 mydb1
  • 把mydb2恢复到名为new_status_db的数据库:mongorestore -d new_status_db mydb2

你之前以为不用-d就能恢复单个数据库,其实是混淆了两种模式的输入要求——不带-d时命令只认「多数据库根目录」,不认单个数据库的目录。

快速总结

参数情况预期输入类型示例命令(基于你的目录)
不带-d包含多个数据库子目录的根目录在mydirectory执行 mongorestore
带-d <目标数据库名>单个数据库的备份目录(含集合文件)在mydirectory/dump执行 mongorestore -d mydb1 mydb1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 06:52:55