我想通过命令导出MongoDB中的所有集合:

mongoexport -d dbname -o Mongo.json

结果是: 没有指定集合!

手册说,如果你不指定一个集合,所有的集合都将被导出。 然而,为什么这行不通呢?

http://docs.mongodb.org/manual/reference/mongoexport/#cmdoption-mongoexport--collection

我的MongoDB版本是2.0.6。


当前回答

按照以下步骤从服务器创建一个mongodb,并将其导入另一台服务器/本地机器,该服务器/本地机器具有用户名和密码

1. mongodump -d dbname -o dumpname -u username -p password
2. scp -r user@remote:~/location/of/dumpname ./
3. mongorestore -d dbname dumpname/dbname/ -u username -p password

其他回答

在尝试了许多复杂的例子后,我发现非常简单的方法对我有用。

我只是想从本地转储一个db,并将它导入到一个远程实例:

在本地机器:

mongodump -d databasename

然后我scp了我的转储到我的服务器机器:

scp -r dump user@xx.xxx.xxx.xxx:~

然后从转储的父目录简单地:

mongorestore 

然后导入数据库。

当然,假设mongodb服务正在运行。

如果您希望将所有集合转储到所有数据库中(这是对原始提问者意图的扩展解释),则使用

mongodump

所有的数据库和集合将被创建在“当前”位置的一个名为“dump”的目录中

这是实现目标最简单的方法。

mongodb -d db_name -o path/filename.json

你可以使用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

首先,启动Mongo DB的路径为->

C:\Program Files\MongoDB\Server\3.2\bin,然后单击mongo .exe文件启动MongoDB服务器。

命令在Windows中导出

命令用于将Windows环境下的MongoDB数据库从“remote-server”导出到本地机器的C:/Users/Desktop/temp-文件夹下,并使用内部IP地址和端口。

C:\> mongodump --host remote_ip_address:27017 --db <db-name> -o C:/Users/Desktop/temp-folder

命令在Windows中导入

将Windows下的MongoDB数据库从本地机器目录C:/Users/Desktop/temp-folder/db-dir导入到“remote-server”

C:\> mongorestore --host=ip --port=27017 -d <db-name> C:/Users/Desktop/temp-folder/db-dir