恢复现有 mongodb 中的单个集合

Restoring single collection in an existing mongodb

我无法将单个集合恢复到现有数据库中,这让我非常失败。 我 运行ning Ubuntu 14.04 mongo 版本 2.6.7 有一个 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

我已经尝试了各种其他组合、选项等,但无法解开谜题,所以我来社区寻求帮助!

如果要恢复单个集合,则必须指定集合的​​转储文件。集合的转储文件位于 'dump/dbname/' 文件夹中。因此,假设您的转储文件夹位于您当前的工作目录中,该命令将类似于 -

mongorestore --db mydbname --collection mycollection dump/mydbname/mycollection.bson

如果要恢复多个集合,可以使用循环:

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

恢复 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

我认为现在可以使用 --nsInclude 选项完成此操作:

mongorestore --nsInclude test.purchaseorders dump/

dump/ 是包含 mongodump 数据的文件夹,test 是数据库,purchaseorders 是集合。

https://docs.mongodb.com/manual/reference/program/mongorestore/