
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_stringstringrequiredFull MongoDB URI including credentials (mongodb:// or mongodb+srv://). Encrypted at rest with AES-256.
databasestringrequiredTarget database name.
collectionstringTarget collection, created automatically. Defaults to "jobs".
delete_expired_jobsbooleanDelete expired jobs (default). Disable to keep them with an expired_at timestamp.
{
"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
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.
javascriptdb.createUser({ user: "jobo_feed", pwd: "your_secure_password", roles: [{ role: "readWrite", db: "jobs_db" }] }) - 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
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.
bashmongodb://jobo_feed:password@host:27017/?authSource=admin&retryWrites=true - 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.
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.
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.
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.
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.
Other destinations
Start syncing jobs to MongoDB
Connect the destination, pick your filters, and let the feed run.