4

使用 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?

4

2 回答 2

8

通过 获取实例的登录详细信息meteor mongo myapp.meteor.com --url。你会得到一些应该匹配的东西

mongodb:// usernamepassword@ hostport/databasename

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

mongo host:port/databasename -u username -p password yourscript.js
于 2013-06-09T12:47:44.840 回答
2

对 Akshat 的回答进行了一些扩展。输出的 URI 字符串meteor mongo --url是一个 MongoDB Connection Stringmongo shell本身不支持这种格式有点令人惊讶。这已被报告为错误;另请参阅此 Stack Overflow 答案

如果meteor mongo有一种方法可以将未解析的参数直接传递给 mongo shell,那就太好了。按照一个常见的 Unix 习惯用法,它可能是这样的:

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

但这不起作用(我提交了一个功能请求)。

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

npm install -g mmongo

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

您现在可以执行以下操作:

mmongo myapp.meteor.com myscript.js 

另请参阅此答案以获取一些示例。

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

于 2015-04-09T19:50:39.313 回答