有没有一种简单的方法从流星部署的应用程序中导出数据?

Gre*_*cer 72 mongodb meteor

有没有一种简单的方法从流星部署的应用程序中导出数据?

所以,例如,如果我部署了一个名为test.meteor.com的应用程序......

我怎样才能轻松下载该应用程序收集的数据 - 以便我可以使用部署的应用程序中的数据在本地运行它?

Sco*_*son 91

要在meteor.com上获取已部署站点的URL,请使用该命令(如果密码保护,您可能需要提供站点密码):

meteor mongo --url YOURSITE.meteor.com
Run Code Online (Sandbox Code Playgroud)

哪个会返回如下内容:

mongodb://client:PASSWORD@sky.member1.mongolayer.com:27017/YOURSITE_meteor_com
Run Code Online (Sandbox Code Playgroud)

你可以给一个像这样的程序 mongodump

mongodump -u client -h sky.member1.mongolayer.com:27017 -d YOURSITE_meteor_com\
          -p PASSWORD
Run Code Online (Sandbox Code Playgroud)

密码仅适用于一分钟.用法:

$ meteor --help mongo
Run Code Online (Sandbox Code Playgroud)

  • 是的,这里需要注意的是,数据库名称末尾的\是为了让您在终端的下一行继续执行命令.它不是数据库名称的一部分,如果您在一行中写出所有命令,则会看到错误. (2认同)

小智 38

以下是如何做相反的事情:(将您当地的monogo db上传到流星)

https://gist.github.com/IslamMagdy/5519514

# How to upload local db to meteor:

# -h = host, -d = database name, -o = dump folder name
mongodump -h 127.0.0.1:3002 -d meteor -o meteor

# get meteor db url, username, and password
meteor mongo --url myapp.meteor.com

# -h = host, -d = database name (app domain), -p = password, folder = the path to the dumped db
mongorestore -u client -h c0.meteor.m0.mongolayer.com:27017 -d myapp_meteor_com -p 'password' folder/
Run Code Online (Sandbox Code Playgroud)


jer*_*ico 10

基于Kasper Souren的解决方案,我创建了一个更新的脚本,可以使用当前版本的Meteor,当您使用密码保护远程Meteor应用程序时也可以使用.

请创建以下脚本parse-mongo-url.coffee:

spawn = require('child_process').spawn
mongo = spawn 'meteor', ['mongo', '--url', 'YOURPROJECT.meteor.com'], stdio: [process.stdin, 'pipe', process.stderr]

mongo.stdout.on 'data', (data) ->
    data = data.toString()
    m = data.match /mongodb:\/\/([^:]+):([^@]+)@([^:]+):27017\/([^\/]+)/
    if m?
        process.stdout.write "-u #{m[1]} -p #{m[2]} -h #{m[3]} -d #{m[4]}"
    else
        if data == 'Password: '
            process.stderr.write data
Run Code Online (Sandbox Code Playgroud)

然后在*nix shell中执行它:

mongodump `coffee parse-mongo-url.coffee`
Run Code Online (Sandbox Code Playgroud)


ska*_*dal 6

我创建了一个工具,mmongo它包装了所有Mongo DB客户端shell命令,以方便在Meteor数据库上使用.如果您使用npm(节点包管理器),则可以使用以下命令安装它:

npm install -g mmongo
Run Code Online (Sandbox Code Playgroud)

否则,请参阅自述文件.

要备份Meteor数据库,您现在可以执行以下操作:

mmongo test.meteor.com dump 
Run Code Online (Sandbox Code Playgroud)

将其上传到您当地的开发流星将是:

mmongo restore dump/test_meteor_com
Run Code Online (Sandbox Code Playgroud)

如果您不小心删除了生产数据库:

mmongo test.meteor.com --eval 'db.dropDatabase()'   # whoops!
Run Code Online (Sandbox Code Playgroud)

您可以轻松恢复它:

mmongo test.meteor.com restore dump/test_meteor_com 
Run Code Online (Sandbox Code Playgroud)

如果你宁愿将一个集合(比方说tasks)导出为可读的东西:

mmongo test.meteor.com export -c tasks -o tasks.json
Run Code Online (Sandbox Code Playgroud)

然后,您可以tasks.json在文本编辑器中打开,进行一些更改并插入更改:

mmongo test.meteor.com import tasks.json -c tasks --upsert
Run Code Online (Sandbox Code Playgroud)

Github上,NPM


mna*_*mna 5

我想你的数据是在一个mongodb数据库中,所以如果是这样的话,问题就是与流星有关的问题.您可以查看mongoexport和mongoimport命令行工具.

编辑(例如):

mongoexport -h flame.mongohq.com:12345 -u my_user -p my_pwd -d my_db -c my_coll

你需要在你的计算机上安装mongodb来使用这个命令行工具,显然你需要你的mongodb信息.在上面的例子中,我连接到MongoHQ(flame.mongohq.com是主机,'12345'是你的mongo服务器的端口),但我不知道meteor主机实际使用了哪个Mongo主机.如果您在本地尝试过Meteor示例(TODO,排行榜等),则可能已经安装了Mongo,因为它默认使用本地服务器.