2017-04-13 78 views
1

所以我使用Node.js,mongoDB,express在cloud9上创建了一个web应用程序。我按照说明在云9中设置了MongoDB。如何将MongoDB数据库从cloud9导出到mlab?

当我完成应用程序后,我将它部署到Heroku,并在mlab(mongolab)中创建了一个新的数据库。这工作正常。

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


我做了一些研究。

据MongoDB的文档,我应该使用db.copyDatabase():

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

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

我假设这意味着我应该连接到通过托管在MLAB分贝: 蒙戈dsblahblah.mlab.com:59220/blahblah -u -p

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

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

帮助。和ELI5。

+0

除非有某种方式来满足您的Mongo的数据库,通过HTTPS,您将无法使您的MongoDB可以从远程源复制。 Cloud9不支持这一点。你应该研究一种创建数据库转储文件的方法,然后将其上传到mlab中。 –

回答

1

Nathan Loyer有正确的答案,但它当然比这更复杂。如果你和我一样,也不知道你在做什么,这里有一个详细的解释对我有帮助,有资源可以让我得到这些信息在底部,以防万一有什么更新并使你过时。

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

  1. 找出你想要移动的集合。为此,在Cloud9中,在适当的目录中,在命令行中,运行以下命令,并记住或记下您标识的数据库和集合。 (如果你不知道的集合,你可以做分贝。(集合).find()输出有数据的列表)
mongo 
show dbs 
use (the name of the appropriate db, not in parentheses though) 
show collections 
  • 导出数据库中的数据。这相对容易。简单地用CTRL + C退出蒙戈,并使用您的命令行下面的代码,以填充数据和没有括号:
  • mongoexport --db (your db name) --collection (your collection name) --outs (a filename: mongodb.org recommends "traffic.json", no quotes) 
    
  • 现在你需要将您的数据导入mLabs。去mLabs,选择你的数据库,并选择“工具”菜单。您应该在“JSON”下看到用于导入的预制代码。再次使用来自mLab的数据库用户凭据填充空白,但是不要运行它。它应该是这个样子:
  • mongoimport -h ds12345.mlab.com:12121 -d databasename -c <collection> -u <user> -p <password> --file <input file, possibly traffic.json?> 
    
  • 为了顺利通过进口,你应该检查你的CLOUD9和mLabs实例在同一运行(或至少非常相似的版本)。在cloud9中,只需在控制台中键入“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
  • 你需要做的是停止CLOUD9所有进程,包括mongod的另一件事,它从根目录运行。这是你需要运行mongoimport的地方(而不是从你的命令行在你的工作区的某个目录中,这是我告诉你运行mongoexport的地方)。要清楚:你的命令行应该显示“用户名:〜$”,而不是“用户名:〜/ workspace/filedirectories/maybeafewofthem(可能是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/

    相关问题