我惨遭失败,无法将单个集合恢复到现有数据库中。 我用mongo 2.6.7版运行Ubuntu 14.04 在我的主目录下有一个dump / mydbname / contents.bson。
如果我跑
mongorestore --collection contents --db mydbname
然后我得到:
connected to: 127.0.0.1
don't know what to do with file [dump]
如果我添加路径
mongorestore --collection contents --db mydbname --dbpath dump/mydbname
然后我得到
If you are running a mongod on the same path you should connect to that instead of direct data file access
我已经尝试了各种其他组合,选项等等,并且无法解决它,所以我来到社区寻求帮助!
答案 0 :(得分:66)
如果要还原单个集合,则必须指定集合的转储文件。集合的转储文件位于“dump / dbname /”文件夹中。因此,假设您的转储文件夹位于当前工作目录中,该命令将类似于 -
mongorestore --db mydbname --collection mycollection dump/mydbname/mycollection.bson
答案 1 :(得分:1)
我认为现在可以使用--nsInclude
选项完成
mongorestore --nsInclude test.purchaseorders dump/
dump/
是包含mongodump数据的文件夹,test
是数据库,purchaseorders
是集合。
https://docs.mongodb.com/manual/reference/program/mongorestore/
答案 2 :(得分:0)
如果要还原多个集合,可以使用循环:
for file in "$HOME/mongodump/dev/<your-db>/"* ; do
if [[ "$file" != "*metadata*" && "$file" != "system.*" && "$file" != "locks.*" ]]; then
file="$(basename "$file”)"
mongorestore \
--db cdt_dev \
--collection "${file%.*}" \ # filename w/o extension
--host "<your-host>" \
--authenticationDatabase "<your-auth-db>" \
-u "user" \
-p "pwd" \
"$HOME/mongodump/dev/<your-db>/$file"
fi;
done
答案 3 :(得分:0)
在mongodb中还原特定集合的步骤。
1)转到转储文件夹所在的目录。
2)通过根据您的数据库名称和集合名称进行修改来执行以下命令。
mongorestore --db mydbname --collection mycollection dump/mydbname/mycollection.bson
如果您获得Failed: yourdbname.collection.name: error creating indexes for collection.name: createIndex error: The field 'safe' is not valid for an index specification error
,则可以使用以下命令:
mongorestore --db mydbname --collection mycollection dump/mydbname/mycollection.bson --noIndexRestore