你如何使用部署的流星应用程序运行mongo shell脚本?

时间:2013-06-09 08:37:22

标签: javascript mongodb meteor

使用mongo,您可以编写传递到shell中的脚本,如:

mongo myDB script.js

http://docs.mongodb.org/manual/tutorial/write-scripts-for-the-mongo-shell/

但要访问已部署的流星应用程序的mongo shell,请执行以下操作:

meteor mongo myApp.meteor.com

我无法像这样传递脚本文件:

 meteor mongo myApp.meteor.com script.js

因为我部署的应用程序受密码保护,上述语句将script.js提供给密码提示。

所以问题是你会怎么做?

或者,如何在不使用流星的情况下连接到部署的流星应用程序的mongo shell?

2 个答案:

答案 0 :(得分:8)

通过meteor mongo myapp.meteor.com --url获取实例的登录详细信息。你会得到一些与

相匹配的东西

<强>的mongodb:// username password @ host:< /强> port / databasename

您可以使用计算机上的mongo登录。请注意登录详细信息仅持续1分钟,届时您需要再次meteor mongo --url

mongo host:port/databasename -u username -p password yourscript.js

答案 1 :(得分:2)

对Akshat的答案进行了扩展。 meteor mongo --url发出的URI字符串是MongoDB Connection Stringmongo shell本身不支持这种格式,这有点令人惊讶。这是reported as a bug;另见this Stack Overflow answer

如果meteor mongo有一种方法可以将未经分析的参数直接传递给mongo shell,那将会很不错。遵循一个常见的Unix习语,它可能是:

meteor mongo myapp.meteor.com -- myscript.js --some-other-mongo-parameter

但这不起作用(我提交了feature request)。

我为所有mongo客户端shell命令编写了一个便捷包装器。您可以使用NPM安装它:

npm install -g mmongo

如果你不使用NPM,它只是一个文件放在$PATH的某个地方;请参阅README at Github

您现在可以:

mmongo myapp.meteor.com myscript.js 

有关示例,请参阅this answer

(以前在Ruby中有一个功能较少的脚本;请参阅this Gist。)