我已经在服务器上使用mongodb命令导出了数据库,dump存储在.bson文件中。我需要使用mongorestore命令将其导入本地服务器。然而,它并没有工作。正确的mongorestore命令是什么?还有哪些恢复db的工具?


当前回答

只是供大家参考,如果有人还在与mongorestore作斗争。

你必须在终端/命令提示符中运行monogorestore,而不是在mongo控制台中。

$ mongorestore -d db_name /path_to_mongo_dump/

欲了解更多细节,请访问官方文件

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

其他回答

Mongorestore是用来导入被mongodb转储的bson文件的工具。

从文档中可以看出:

Mongorestore从mongodb获取输出并恢复它。

例子:

# On the server run dump, it will create 2 files per collection
# in ./dump directory:
# ./dump/my-collection.bson
# ./dump/my-collection.metadata.json
mongodump -h 127.0.0.1 -d my-db -c my-collection

# Locally, copy this structure and run restore.
# All collections from ./dump directory are picked up.
scp user@server:~/dump/**/* ./
mongorestore -h 127.0.0.1 -d my-db

如果你能远程访问,你就能做到

bson:

mongorestore --host m2.mongodb.net --port 27016 --ssl --username $user --password $password --authenticationDatabase $authdb -d test -c people "/home/${USER}/people.bson"

对于压缩为。gz (gzip)格式的bson:

mongorestore --host m2.mongodb.net --port 27016 --ssl --username $user --password $password --authenticationDatabase $authdb -d test -c people --gzip --dir "/home/${USER}/people.bson.gz"

在mongodb 3.0或以上版本中,我们可以指定数据库名进行恢复。假设您位于包含bson文件的根目录

./
a.bson
b.metadata.bson
...

剧本是这样的

for FILENAME in *; do mongorestore -d <db_name> -c "${FILENAME%.*}" $FILENAME; done
bsondump collection.bson > collection.json

然后

mongoimport -d <dbname> -c <collection> < collection.json

导入.bson文件非常简单:

mongorestore -d db_name -c collection_name /path/file.bson

在情况下仅为单一收集。试试这个:

mongorestore --drop -d db_name -c collection_name /path/file.bson

恢复mongodb导出的完整文件夹:

mongorestore -d db_name /path/

注意:如果您已启用身份验证,请使用以下语法:

mongorestore -u username --authenticationDatabase admin -d db_name -c collection_name /path/file.bson