恢复现有mongodb中的单个集合

时间:2015-02-21 00:00:36

标签: mongodb ubuntu-14.04

我惨遭失败,无法将单个集合恢复到现有数据库中。 我用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

我已经尝试了各种其他组合,选项等等,并且无法解决它,所以我来到社区寻求帮助!

4 个答案:

答案 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