我想通过命令导出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。
当前回答
我把所有的收集倾倒在robo3t上。 我在vagrant/homestead上运行下面的命令。这是我的工作
mongodump --host localhost --port 27017 --db db_name --out db_path
其他回答
如果你有这样的问题: Failed:不能创建会话:不能连接到服务器:connection(): auth error: sasl conversation error: unable to authenticate using mechanism " sran - sha -1": (AuthenticationFailed)认证失败。
然后添加——authenticationDatabase admin
eg:
mongodb -h 192.168.20.30:27018——authenticationDatabase admin -u dbAdmin -p dbPassword -d dbName -o path/to/folder
如果你想备份服务器上的所有dbs,而不用担心调用dbs,使用下面的shell脚本:
#!/bin/sh
md=`which mongodump`
pidof=`which pidof`
mdi=`$pidof mongod`
dir='/var/backup/mongo'
if [ ! -z "$mdi" ]
then
if [ ! -d "$dir" ]
then
mkdir -p $dir
fi
$md --out $dir >/dev/null 2>&1
fi
这将使用mongodb实用程序,如果没有指定,该实用程序将备份所有db。
你可以把它放在你的cronjob中,它只会在mongod进程正在运行时运行。如果不存在备份目录,它还将创建备份目录。
每个DB备份都被写入一个单独的目录,因此您可以从全局转储恢复各个DB。
在尝试了许多复杂的例子后,我发现非常简单的方法对我有用。
我只是想从本地转储一个db,并将它导入到一个远程实例:
在本地机器:
mongodump -d databasename
然后我scp了我的转储到我的服务器机器:
scp -r dump user@xx.xxx.xxx.xxx:~
然后从转储的父目录简单地:
mongorestore
然后导入数据库。
当然,假设mongodb服务正在运行。
打开连接 启动服务器 命令提示符
出口:
Mongo /bin> mongoexport -d webmitta -c domain -o domain-k.json
进口:
mongoimport -d dbname -c newCollecionname——file domain-k.json
在哪里
webmitta(db name)
domain(Collection Name)
domain-k.json(output file name)
您可以使用以下命令创建zip文件。它将创建数据库{dbname}的zip文件。稍后您可以在mongo DB中导入以下zip文件。
Window filepath=C:\Users\Username\mongo
mongodump --archive={filepath}\+{filename}.gz --gzip --db {dbname}