在流星服务器上将TSV导入MongoDB

时间:2014-03-06 16:20:27

标签: mongodb import meteor hosting tsv

我正在尝试使用meteor并将我的应用程序部署到meteor的服务器上。该应用程序是一个简单的动态过滤引擎,其中数据来自TSV文件。在我的家用机器上,我使用mongoimport(localhost:3001)将TSV导入本地数据库,但在流星服务器上,我收到了一个全新的空数据库。我想知道如何将TSV导入到流星服务器上托管的数据库。我确信有一些安全特性可以处理公开提供的托管服务,并猜测这是我的问题。

我已通过OSX上的终端登录流星服务器上的开发者帐户,生成服务器信息,如:production-db-c1.meteor.io:27017/myApp_meteor_com

使用该服务器信息,我继续使用./mongoimport,如下所示:(不是剪切和粘贴,所以忽略错别字)

  

./ mongoimport --host myApp_meteor_com / production-db-c1.meteor.io:27017 --collection myCollection -u User -p Pass --type tsv --headerline --file blah.tsv

我通过首先将自己添加为具有“readWrite”访问权限的用户,然后在我的应用程序的流星服务器上查询db.system.users集合而获得的用户/密码信息。该集合中有三个用户,其中一个名为“myApp_meteor_com”,一个是我自己添加的,另一个显然是连接的终端客户端。我在上面的./mongoimport字符串中尝试了每个用户/传递组合。

*咳嗽这并不是真正的'myApp',但你明白了

这是执行mongoimport

后终端的长距离回声
Thu Mar  6 12:38:38.412 kern.sched unavailable
Thu Mar  6 12:38:38.415 starting new replica set monitor for replica set myApp_meteor_com with seed of production-db-c1.meteor.io:27017
Thu Mar  6 12:38:38.467 successfully connected to seed production-db-c1.meteor.io:27017 for replica set myApp_meteor_com
Thu Mar  6 12:38:38.518 warning: node: production-db-c1.meteor.io:27017 isn't a part of set: myApp_meteor_com ismaster: { setName: "production-c", ismaster: true, secondary: false, hosts: [ "production-db-c1.meteor.io:27017", "production-db-c3.meteor.io:27017", "production-db-c2.meteor.io:27017" ], arbiters: [ "production-dbarb-c2.meteor.io:27017", "production-dbarb-c1.meteor.io:27017" ], primary: "production-db-c1.meteor.io:27017", me: "production-db-c1.meteor.io:27017", maxBsonObjectSize: 16777216, maxMessageSizeBytes: 48000000, localTime: new Date(1394131118501), ok: 1.0 }
Thu Mar  6 12:38:40.518 warning: No primary detected for set myApp_meteor_com
Thu Mar  6 12:38:40.519 All nodes for set myApp_meteor_com are down. This has happened for 1 checks in a row. Polling will stop after 29 more failed checks
Thu Mar  6 12:38:40.519 replica set monitor for replica set myApp_meteor_com started, address is myApp_meteor_com/
couldn't connect to [myApp_meteor_com/production-db-c1.meteor.io:27017] connect failed to replica set myApp_meteor_com/production-db-c1.meteor.io:27017

非常感谢来自meteor / mongodb专家的任何帮助。

2 个答案:

答案 0 :(得分:1)

突出显示这些内容以明确:

  

Thu Mar 6 12:38:38.518警告:node:production-db-c1.meteor.io:27017 不属于集:myApp_meteor_com ismaster:{setName: “production-c”,ismaster:true,(...)

     

Thu Mar 6 12:38:40.518警告:没有检测到设置myApp_meteor_com的主要内容

您正在连接到主要设备,所以没关系。但是副本集的名称错误。第一个警告会告诉您该主机所属的副本集名称(“production-c”),并且还会转储成员的配置列表。

更好的连接参数是:

./mongoimport --host production-c/production-db-c1.meteor.io,production-db-c3.meteor.io, production-db-c2.meteor.io --collection myCollection -u User-p Pass --type tsv --headerline --file blah.tsv

因为当你的当前主要切换到辅助时,它包含一些种子列表信息。

答案 1 :(得分:0)

以上帮助了我很多,但我遇到了身份验证问题。因此,在对流星服务器如何发布临时用户/密码进行更多研究之后,我终于能够将TSV文件导入到我的meteor部署应用程序的mongoDB中。

我的“关键”是使用:

  

meteor mongo --ur myApp

以获得用户/通行证。我的理解是,当运行此命令时,每次在流星服务器上创建一个新的用户/传递,并且只能在很短的时间内(60秒?)。当我运行它时,我在命令提示符下收到了这个回声

mongodb://client-faddb071:a74c4b2a-15bc-2dcf-dc58-b5369c9ebee3@production-db-c1.meteor.io:27017/myApp_meteor`_com

根据该信息,我能够提取用户名:“client-faddb071”和密码“a74c4b2a-15bc-2dcf-dc58-b5369c9ebee3”

然后在另一个终端窗口中(因为用户/传递不会持续很长时间),我已准备好使用mongo import命令:

>  ./mongoimport --host production-db-c1.meteor.io:27017 --username client-faddb071  --password a74c4b2a-15bc-2dcf-dc58-b5369c9ebee3  --db myApp_meteor_com --collection myCollection --drop --type tsv --headerline --file /path/to/file.tsv 

这对我来说是逐字逐句的,来自TSV的3888条记录已成功加载到我的meteor托管的mongoDB中。感谢大家的投入,这一切都有助于我的最终知识和成功。