Database

MongoDB job data feed

Store the whole job object, nesting intact.

MongoDB keeps the canonical job document exactly as Jobo produces it — qualifications, locations, and compensation stay nested instead of being flattened into columns. Each job is one document keyed on its job ID, so pushes are idempotent, and because it is a document destination you can attach a transformation pipeline to reshape jobs before they land.

Sync
Incremental, every 15 min
Deduplication
Upsert on job ID
Pipelines
Supported
Credentials
AES-256 at rest

Connection configuration

The fields Jobo collects to reach your MongoDB instance.

connection_stringstringrequired

Full MongoDB URI including credentials (mongodb:// or mongodb+srv://). Encrypted at rest with AES-256.

databasestringrequired

Target database name.

collectionstring

Target collection, created automatically. Defaults to "jobs".

delete_expired_jobsboolean

Delete expired jobs (default). Disable to keep them with an expired_at timestamp.

MongoDB config
{
  "connection_string": "mongodb+srv://user:pass@cluster.mongodb.net",
  "database": "jobs_db",
  "collection": "jobs",
  "delete_expired_jobs": true
}

How to sync jobs to MongoDB

One-time setup. After this, the feed maintains itself.

  1. 1

    Create a dedicated database user

    Give the user the readWrite role on the target database only. Jobo needs to create the collection and its indexes on first sync, which readWrite covers. Never use a root account.

    javascript
    db.createUser({
      user: "jobo_feed",
      pwd: "your_secure_password",
      roles: [{ role: "readWrite", db: "jobs_db" }]
    })
  2. 2

    Allow network access

    On MongoDB Atlas, add Jobo's IP range under Network Access. Self-hosted instances need the equivalent firewall rule. Contact support for the current range.

  3. 3

    Put driver options in the URI

    Options such as authSource, replicaSet, retryWrites, and TLS settings belong in the connection string rather than separate fields. Prefer mongodb+srv://, which enables TLS by default.

    bash
    mongodb://jobo_feed:password@host:27017/?authSource=admin&retryWrites=true
  4. 4

    Activate and let it sync

    The collection and its two indexes are created on first push. Documents use the Jobo job ID as _id, so subsequent pushes replace in place rather than duplicating.

Common issues

What actually goes wrong when connecting MongoDB, and the fix.

high

Authentication fails even though the credentials are correct.

The user is probably defined in a different database than the one you are writing to. Append ?authSource=admin (or the correct database) to the connection string.

high

Connection times out from Atlas.

Atlas blocks by default. Add Jobo's IP range to the Network Access list — a successful connection test confirms it took effect.

medium

Documents appear duplicated after a re-push.

That should not happen: _id is set to the job ID and writes are upserts. If you see duplicates, an application process is inserting its own copies into the same collection — give the feed a dedicated one.

low

The collection is empty after a force resync.

Force resync drops the collection and recreates it before repopulating. Wait for the push to finish; the row counter on the activity page tracks progress.

Best practices

  • Give the feed its own collection — force resync drops whatever collection it is pointed at.
  • Prefer mongodb+srv:// so TLS is on by default.
  • Leave the automatic ix_jobo_synced_at and ix_expired_at indexes in place; stale-document cleanup depends on them.
  • Add your own compound indexes for the queries your app actually runs.
  • Attach a pipeline if you want a narrower document than the full canonical job.

Start syncing jobs to MongoDB

Connect the destination, pick your filters, and let the feed run.