我想通过命令导出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。
当前回答
这是实现目标最简单的方法。
mongodb -d db_name -o path/filename.json
其他回答
我意识到这是一个相当老的问题,如果你想要100%的忠实结果(包括索引),mongodb /mongorestore显然是正确的方法。
然而,我需要一个快速而简单的解决方案,它可能在MongoDB的新旧版本之间向前和向后兼容,前提是没有什么特别古怪的事情发生。为此我想知道最初问题的答案。
上面还有其他可接受的解决方案,但这个Unix管道相对较短:
mongo --quiet mydatabase --eval "db.getCollectionNames().join('\n')" | \
grep -v system.indexes | \
xargs -L 1 -I {} mongoexport -d mydatabase -c {} --out {}.json
这将为每个集合生成一个适当命名的.json文件。
注意,数据库名称(“mydatabase”)出现了两次。我假设数据库是本地的,你不需要通过凭据,但这很容易做到与mongo和mongoexport。
注意,我使用grep -v来丢弃系统。索引,因为我不希望旧版本的MongoDB试图解释来自新版本的系统集合。相反,我允许我的应用程序执行它通常的ensureIndex调用来重新创建索引。
你可以使用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
如果您想连接远程mongoDB服务器(如mongolab.com),则应该传递连接凭据 如。
mongoexport -h id.mongolab.com:60599 -u username -p password -d mydb -c mycollection -o mybackup.json
这是实现目标最简单的方法。
mongodb -d db_name -o path/filename.json