Page cover image

MongoDB

MongoDB is the most commonly used NoSQL database. Here is everything you need to know to connect it to any of your other systems using Stacksync.

Pre-requisites

We strongly suggest using MongoDB's built-in read or readWrite roles. For more information on how to create and grant roles to users, check out MongoDB's official documentation.

// Grant user roles without overwriting existing ones (specific DBs)
use admin

const user = db.getUser("<user>");  // Change to your username

const updatedRoles = user.roles.concat([
        { role: "read", db: "local" }, // required to read the oplog and therefore read changes from mongodb
        { role: "readWrite", db: "<db1>" }, // when need to read and write to mongodb
        { role: "read", db: "<db2>" }, // when do not need to write to mongodb
        // Add the database(s) you want Stacksync to have access to
      ]);

db.updateUser("<user>", { roles: updatedRoles });

If a collection you see in your database does not appear in Stacksync, or changes are not correctly replicated, one of the previous conditions is not met. Please double check your setup in that case.

If you have any questions, don't hesitate to contact us at hello@stacksync.com.

Connecting your MongoDB instance

To connect your MongoDB database to Stacksync, you'll need the following data:

  • Protocol: must be mongodb+srv:// or mongodb://.

  • Host: the URI or IP where the server can be found.

  • Port (optional): the default is usually 27017.

  • Authentication method

    • Username: name used to authenticate with the server.

    • Password: the password used to authenticate with the server.

    or

  • Database: the name of the database where data is present.

  • Connection options:

    • Replica Set (optional): allows you to specify the name of the replica set to connect to.

    • Auth Database (optional): the database that holds the user's info. The default is admin for username & password, and $external for TLS.

Other connection options are not currently supported. If you need special assistance, please contact us at hello@stacksync.com.

  • SSH Tunnel:

    • Username: The user Stacksync can identify as to establish the tunnel.

    • Host: IP of the machine to SSH into.

    • Public Key: copy into your machine's ~/.ssh/authorized_keys file. You can use ssh-copy-id or simply SSH into the server and paste it using your preferred text editor.

SSH tunneling is currently only supported for single, self-hosted MongoDB instances via the mongodb:// protocol. For any further questions, please contact us at hello@stacksync.com.

The connection setup screen for user+password
The connection setup screen for TLS/SSL

Connection strings

MongoDB has 2 formats for their connection strings. Make sure to pick the one that best suits your use case.

  • SRV: mongodb+srv://[username:password@]host[/[defaultauthdb][?options]] (elements in brackets [] are optional)

    • Example: mongodb+srv://myDatabaseUser:D1fficultP%40ssw0rd@cluster0.example.mongodb.net/?retryWrites=true&w=majority

  • Standard: mongodb://[username:password@]host1[:port1][,...hostN[:portN]][/[defaultauthdb][?options]] (elements in brackets [] are optional)

    • Example: mongodb://myDatabaseUser:D1fficultP%40ssw0rd@mongodb0.example.com:27017,mongodb1.example.com:27017,mongodb2.example.com:27017/?authSource=admin&replicaSet=myRepl

Find more examples here.

Getting your connection string

To find out your connection string, check out MongoDB's official guide for MongoDB Atlas, or their guide for self-hosted clusters.

If you have any questions, don't hesitate to contact us at hello@stacksync.com, we're happy to help!

Last updated