我想通过命令导出MongoDB中的所有集合:
mongoexport -d dbname -o Mongo.json
结果是: 没有指定集合!
手册说,如果你不指定一个集合,所有的集合都将被导出。 然而,为什么这行不通呢?
http://docs.mongodb.org/manual/reference/mongoexport/#cmdoption-mongoexport--collection
我的MongoDB版本是2.0.6。
我想通过命令导出MongoDB中的所有集合:
mongoexport -d dbname -o Mongo.json
结果是: 没有指定集合!
手册说,如果你不指定一个集合,所有的集合都将被导出。 然而,为什么这行不通呢?
http://docs.mongodb.org/manual/reference/mongoexport/#cmdoption-mongoexport--collection
我的MongoDB版本是2.0.6。
当前回答
对于本地和远程转储和恢复:
为当地
当地的转储
mongodump -d mydb -o ./mongo-backup
当地的恢复
mongorestore -d mydb ./mongo-backup/mydb
为远程
远程转储
mongodump --uri "mongodb+srv://Admin:MYPASS@appcluster.15lf4.mongodb.net/mytestdb" -o ./mongo-backup
远程恢复
mongorestore --uri "mongodb+srv://Admin:MYPASS@appcluster.15lf4.mongodb.net/mytestdb" ./mongo-backup/mytestdb
更新:
如果你正在使用mongo 4.0,你可能会遇到一个快照错误,那么你可以运行这个参数:——forceTableScan。更多信息请参见这里。错误是这样的:
mongodump error reading collection: BSON field 'FindCommandRequest.snapshot' is an unknown field.
其他回答
如果您想连接远程mongoDB服务器(如mongolab.com),则应该传递连接凭据 如。
mongoexport -h id.mongolab.com:60599 -u username -p password -d mydb -c mycollection -o mybackup.json
我需要Windows批处理脚本版本。这个帖子很有用,所以我想我也会把我的答案贡献给它。
mongo "{YOUR SERVER}/{YOUR DATABASE}" --eval "rs.slaveOk();db.getCollectionNames()" --quiet>__collections.txt
for /f %%a in ('type __collections.txt') do @set COLLECTIONS=%%a
for %%a in (%COLLECTIONS%) do mongoexport --host {YOUR SERVER} --db {YOUR DATABASE} --collection %%a --out data\%%a.json
del __collections.txt
我在使用set /p COLLECTIONS=<__collections.txt时有一些问题,因此使用了复杂的for /f方法。
以下是恢复导出数据库时对我有效的方法:
Mongorestore -d 0 ./0——drop
其中。/包含导出的bson文件。注意——drop将覆盖现有数据。
一些选项现在已弃用,在4.4.5版本中,我是这样做的
mongodump --archive="my-local-db" --db=my
mongorestore --archive="my-local-db" --nsFrom='my.*' --nsTo='mynew.*'
阅读更多关于恢复:https://docs.mongodb.com/database-tools/mongorestore/
你可以使用mongo——eval 'printjson(db.getCollectionNames())'来获取集合列表 然后对它们都做一个mongoexport。 下面是一个ruby的例子
out = `mongo #{DB_HOST}/#{DB_NAME} --eval "printjson(db.getCollectionNames())"`
collections = out.scan(/\".+\"/).map { |s| s.gsub('"', '') }
collections.each do |collection|
system "mongoexport --db #{DB_NAME} --collection #{collection} --host '#{DB_HOST}' --out #{collection}_dump"
end