当Meteor正在运行时,如何从其他客户端访问Meteor的MongoDB?

Jos*_*ian 54 python mongodb meteor

我想从Python客户端访问Meteor的MongoDB,而Meteor正在运行.

因为Meteor的数据库被锁定,我无法启动mongod.

如何从其他客户端访问数据库?

deb*_*lis 69

meteor命令提供了一种干净的方式.要获取正在运行的mongod的URL:

meteor mongo -U
Run Code Online (Sandbox Code Playgroud)

你可以从python解析.

  • 这应该是最好的答案.当端口3002被其他东西使用时,Meteor将使用另一个端口用于Mongo.使用此命令,您可以找出当前使用的是哪一个. (5认同)

dan*_*nny 37

当您运行meteor命令时,Meteor会在端口3002上为您启动mongod ,并将mongo数据文件存储在其中.meteor/local/db

输出ps aux | grep 'mongod'显示meteor使用的mongod命令:

/usr/local/meteor/mongodb/bin/mongod --bind_ip 127.0.0.1 --smallfiles --port 3002 --dbpath /path/to/your/project/.meteor/local/db
Run Code Online (Sandbox Code Playgroud)

所以只需相应地连接你的mongo客户端.在python中:

>>> import pymongo
>>> con = pymongo.Connection(host='127.0.0.1', port=3002)
>>> con.database_names()
[u'meteor', u'local']
Run Code Online (Sandbox Code Playgroud)

更新:遗憾的是,以这种方式直接在mongo中进行更改将不会反映在应用程序中,但更改将反映在整页(重新)加载中.

  • 这个答案已经过时了.现在写入Mongo将立即对所有连接的服务器进行页面更新. (13认同)
  • 实际上,看起来不需要整页重新加载.在这个文件中 - https://github.com/meteor/meteor/blob/master/packages/mongo-livedata/mongo_driver.js - 无论Mongo的'脏'状态如何,你都会看到每10秒一次刷新计时器.只需直接更新到mongo并等待10秒,更改将出现在浏览器中. (5认同)
  • 我只是测试了这个并且它确实有效,你只需等待10秒钟就可以更新它.我希望有一种方法可以改变设定间隔的速度而不必潜入mongo-livedata. (2认同)
  • 对我来说它是端口3001,确保你运行`ps aux | grep'mongod'`命令查看它在你的机器上使用的端口. (2认同)

Jos*_*ian 6

使用Meteor部署说明

该命令将如下所示:

   PORT=3000 MONGO_URL=mongodb://localhost:27017/myapp node bundle/main.js
Run Code Online (Sandbox Code Playgroud)

  • 这看起来像是一个完全不同的问题的答案. (2认同)