所以我使用Node.js,mongoDB,express在cloud9上创建了一个Web应用程序。我按照说明在云端9中设置了MongoDB。
当我完成应用程序时,我将其部署到Heroku,并在mlab(mongolab)中创建了一个新的数据库。这很好。
但是,我将大量虚拟数据插入到cloud9上托管的数据库中。 我想将这个虚拟数据从cloud9中的db复制到mlab中的db。我该怎么做?
我做了一些研究。
根据mongodb文档,我应该使用db.copyDatabase():
db.copydatabase(fromdb,todb,fromhost,username,password,mechanism)
它说我应该在目标实例中运行此命令,即接收复制数据的实例。
我假设这意味着我应该通过以下方式连接到mlab上托管的数据库: mongo dsblahblah.mlab.com:59220/blahblah -u -p
然后运行db.copyDatabase命令,对吗?
但是我应该将什么用于fromdb参数?这是在cloud9中托管的数据库。但这个db的网址是什么?
帮助。和ELI5。
答案 0 :(得分:3)
从Cloud9执行数据库转储。 https://docs.mongodb.com/manual/reference/program/mongoexport/
然后将文件导入MLab。这比尝试编写自动化方法要容易得多,除非你将来会反复进行这种转移。
答案 1 :(得分:2)
请注意,您需要为要迁移的每个集合执行此操作。你可能只有一个或几个收藏品,所以没那么麻烦。如果你想移动一个完整的数据库,可以调整这些指令,但这取决于你。
mongo
show dbs
use (the name of the appropriate db, not in parentheses though)
show collections
mongoexport --db (your db name) --collection (your collection name) --outs (a filename: mongodb.org recommends "traffic.json", no quotes)
mongoimport -h ds12345.mlab.com:12121 -d databasename -c <collection> -u <user> -p <password> --file <input file, possibly traffic.json?>
您需要做的另一件事是停止Cloud9中的所有进程,包括从根目录运行的Mongod。这是你需要运行mongoimport的地方(不是你工作区中某个目录中的命令行,这是我告诉你从中运行mongoexport的地方)。要明确:您的命令行应该显示&#34;用户名:〜$&#34;,不是&#34;用户名:〜/ workspace / filedirectories / maybeafewofthem(可能是主人)$&#34;。
由于您从根运行,因此您还需要确保正确引用您传递的文件名。它不会像&#34; traffic.json那样简单。&#34;它应该看起来像&#34; workspace / directoryName / traffic.json。&#34; (如果导出成功,您应该看到traffic.json文件在某处浮动文件。)
就是这样。运行步骤3中的代码,并检查mLabs它是否正确处理。很高兴。
资源:
http://docs.mlab.com/connecting/
http://docs.mlab.com/migrating/
https://docs.mongodb.com/manual/reference/program/mongoexport/
https://docs.mongodb.com/manual/reference/program/mongoimport/