如何将MongoDB数据库从cloud9导出到mlab?

所以我使用Node.js,mongoDB,在云9上创build了一个Web应用程序。 我按照说明在云9中设置了MongoDB。

当我完成应用程序,我部署到Heroku,并创build了一个新的数据库mlab(蒙古)。 这工作正常。

但是,我在cloud9上托pipe的数据库中插入了大量虚拟数据。 我想将这个虚拟数据从cloud9中的db复制到mlab中的db中。 我怎么做?


我做了一些研究。

根据mongodb文档,我应该使用db.copyDatabase():

db.copydatabase(fromdb,todb,fromhost,用户名,密码,机构)

它说我应该在目标实例中运行这个命令,即接收复制数据的实例。

我假设这意味着我应该连接到mlab上托pipe的数据库:mongo dsblahblah.mlab.com:59220/blahblah -u -p

然后运行db.copyDatabase命令,更正?

但是,我应该使用fromdb参数? 这是在云9托pipe的数据库。 但是这个数据库的url是什么?

帮帮我。 和ELI5。

内森·洛耶(Nathan Loyer)有正确的答案,但当然比这更复杂。 如果你像我一样,不知道你在做什么,这里有一个详细的解释对我有用,有资源我得到这些信息在底部,以防万一有什么更新,使你过时。

请注意,您需要为每个要迁移的集合执行此操作。 有机会你只有一个或几个集合,所以没有太多的麻烦。 如果你想移动一个完整的分贝,这些说明是可以调整的,但这取决于你。

  1. 找出你想要移动的集合。 为此,在Cloud9中,在相应的目录中,在命令行中,运行以下命令,记住或写下您标识的数据库和集合。 (如果你不确定集合,你可以做db。(collection).find()来输出它所拥有的数据列表)
mongo show dbs use (the name of the appropriate db, not in parentheses though) show collections 
  1. 导出数据库中的数据。 这相对容易。 只需用ctrl + c退出mongo,然后在命令行中使用下面的代码,填入数据并且没有括号:
 mongoexport --db (your db name) --collection (your collection name) --outs (a filename: mongodb.org recommends "traffic.json", no quotes) 
  1. 现在您需要将数据导入mLabs。 去mLabs,select你的数据库,并select“工具”菜单。 您应该在“JSON”下看到一个预制代码,用于导入。 再次使用mLab的数据库用户凭据填充空白, 但不要运行它 。 它应该看起来像这样:
 mongoimport -h ds12345.mlab.com:12121 -d databasename -c <collection> -u <user> -p <password> --file <input file, possibly traffic.json?> 
  1. 为了成功通过导入,您应该检查Cloud9和mLabs实例是否在相同(或至less非常相似的版本)上运行。 在cloud9中,只需在控制台input“mongo”,看看它说了什么。 你可能在2.6或3.2。 在mLab上,几乎在每个页面上。 只要找“mongod版本:xxxxx”。 你可能在3.4.7上。 我用mLab 3.4将它作为Cloud9 3.2运行,并且运行良好。 (如果你的Cloud9的版本低于版本3,请备份任何重要的东西(使用git?)并根据https://community.c9.io/t/updating-mongodb/3914上的说明进行更新&#xFF09;

您需要做的另一件事是停止Cloud9中的所有进程,包括从根目录运行的Mongod。 这是你需要运行mongoimport的地方(而不是从你的命令行里面的工作空间的某个目录,这是我告诉你运行mongoexport的地方)。 要清楚:你的命令行应该显示“username:〜$”,而不是“username:〜/ workspace / filedirectories / maybeafewofthem(might master)$”。

由于您是从根目录运行的,因此还需要确保正在传递的文件名被正确引用。 它不会像“traffic.json”那么简单。 它应该看起来像“workspace / directoryName / traffic.json”。 (如果你的导出是成功的,你应该看到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/

从Cloud9执行数据库转储。 https://docs.mongodb.com/manual/reference/program/mongoexport/

然后将文件导入到MLab。 这将比尝试编写一个自动化的方法来做到这一点要容易得多,除非您将来会一遍又一遍地进行这种转换。