How to Create an Atlas Trigger in MongoDB
To create an
Atlas Trigger in MongoDB, go to your Atlas cluster, open the Triggers tab, and choose either a Database Trigger or Scheduled Trigger. Configure the trigger by selecting the event type, database, collection, and the function to run when triggered.Syntax
An Atlas Trigger is defined by these main parts:
- Trigger Type: Choose between
Database Trigger(runs on data changes) orScheduled Trigger(runs on a time schedule). - Event: For database triggers, select events like
insert,update, ordelete. - Namespace: Specify the database and collection to watch.
- Function: The JavaScript function that runs when the trigger fires.
javascript
exports = async function(changeEvent) { // Your code here console.log('Trigger fired:', changeEvent); };
Example
This example creates a database trigger that runs a function whenever a new document is inserted into the users collection in the mydb database.
json
{
"name": "NewUserTrigger",
"type": "DATABASE",
"enabled": true,
"cluster": "YourClusterName",
"event": "INSERT",
"database": "mydb",
"collection": "users",
"function": "exports = async function(changeEvent) {\n const fullDocument = changeEvent.fullDocument;\n console.log('New user added:', fullDocument);\n };"
}Output
New user added: { /* new user document data */ }
Common Pitfalls
- Not enabling the trigger after creation will prevent it from running.
- Choosing the wrong event type (e.g., using
UPDATEwhen you wantINSERT). - Incorrectly specifying the database or collection namespace causes the trigger not to fire.
- Writing functions without handling errors can cause silent failures.
json
/* Wrong: Missing enabling the trigger */ { "name": "MyTrigger", "type": "DATABASE", "enabled": false, // Trigger is disabled "event": "INSERT", "database": "mydb", "collection": "users", "function": "exports = async function(changeEvent) { console.log('Triggered'); };" } /* Right: Enabled trigger */ { "name": "MyTrigger", "type": "DATABASE", "enabled": true, "event": "INSERT", "database": "mydb", "collection": "users", "function": "exports = async function(changeEvent) { console.log('Triggered'); };" }
Quick Reference
| Property | Description |
|---|---|
| name | Name of the trigger |
| type | Type of trigger: DATABASE or SCHEDULED |
| enabled | Whether the trigger is active (true/false) |
| cluster | Name of the Atlas cluster |
| event | Event type to listen for (INSERT, UPDATE, DELETE) |
| database | Database name to watch |
| collection | Collection name to watch |
| function | JavaScript function to execute on trigger |
Key Takeaways
Create Atlas Triggers in the Atlas UI under the Triggers tab.
Choose the correct trigger type and event to match your use case.
Always enable your trigger to make it active.
Write your trigger function in JavaScript to handle the event data.
Double-check database and collection names to ensure the trigger fires.