Using "meteor mongo" on localhost but with remote Database

meteor, meteorite, mongodb

Solution

Assuming you had a username of `username`, a password of `PASSWORD`, a database named `test`, and a hostname of `hatch.mongohq.com`:

Connecting via the shell

$ mongo hatch.mongohq.com:27017/test -u username -p PASSWORD

Connecting via Meteor

$ MONGO_URL="mongodb://username:PASSWORD@hatch.mongohq.com:27017/test" meteor

Other notes

You should define your Meteor collections outside of the `client` directory so they can be used on both the client and the server. See this for more details.

You will find that connecting to a remote database is much slower than connecting locally, so it's generally not recommended for development.

Meteor creates a dev database for you when it starts. This also affords you the very helpful commands: `meteor reset` and `meteor mongo`, to reset, and connect to said database.

Initializing your database

Create a file on the server for initialization - e.g. `server/initialize.js`. When the server starts you can add users or other documents which do not yet exist. For example:

Meteor.startup(function() {
  if (Meteor.users.find().count() === 0) {
    Accounts.createUser({
      username: 'jsmith',
      password: 'password',
      profile: {
        firstName: 'John',
        lastName: 'Smith'
      }
    });
  }
});

Problem

I'm following the telescope tutorial. - I created a /client/collections/myfile.js - I'm on localhost, but I'm launching Meteor with remote DB hosted on MongoHQ instead of using Meteor's local DB. In this tutorial I'm told to insert a new post by opening the Mongo console. ``` $ meteor mongo ``` How can I: ``` $ meteor mongo (somehow connect to my remote DB to use the meteor commands in terminal ``` So that I can: ``` $ db.collectionname.insert({ stuff }); ``` Or does this have nothing to do with "Meteor" in this case and I just use a Mongo shell outside of Meteor? The collection that I created in "/client/collections/collection.js" is this simply for telling Meteor which collection to push as a subset to the client? I'd like to use the same DB ( remotely hosted with MongoHQ) for my localhost development, and my actual live dev.mysite.com so when I deploy to this dev site, anything I've done in the DB is also there and ready to go.

Original source