MongoDB Atlas Admin Associate study materials
MongoDB Atlas Admin Associate study resources

MongoDB Atlas Admin Associate common mistakes

MongoDB Atlas Admin Associate · Understand the traps and how to avoid them.

Mistake 1

Planning a cluster tier change as if it were instantaneous and invisible: picking the middle of a business day for an M30-to-M40 upgrade, assuming the connection string and existing sessions survive untouched, and later being surprised that provisioned storage can never be reduced after an over-allocation.

The Atlas UI makes tier changes look like a single dropdown, so candidates never learn that a tier change triggers a rolling restart of the replica set members and frequently a primary election, and that storage auto-scaling only grows the volume. They also treat the change window as zero-risk and never verify driver retry behaviour beforehand.

What to do instead

Treat any tier or storage change as a maintenance event: schedule it in a low-traffic window, confirm the application driver has retryable writes and retryable reads enabled so the election is transparent, and pre-agree a rollback tier. Right-size storage by projecting growth from the disk-utilization trend rather than guessing upward, because Atlas does not let you shrink the volume afterwards.

Mistake 2

Treating Atlas console users and database users as the same identity: giving an application team Atlas project membership so they can 'log in to the database', or reusing one database user with the atlasAdmin role across every service and environment.

Both objects are created from the same UI area and both are called 'users', so the mental model collapses. Candidates then skip the separate question of database-level role scope and default to a broad built-in role instead of reasoning about least privilege.

What to do instead

Separate the two planes explicitly: Atlas users authenticate to the control plane with organization and project roles, database users authenticate to the data plane with SCRAM, X.509, or AWS IAM and are scoped per project. Create one database user per workload with the narrowest built-in role, and use custom roles (each scoped to a single database) when built-in roles are too broad. Never assign atlasAdmin to an application user.

Mistake 3

Testing connectivity from the wrong place and misreading the result: verifying a private endpoint or peering setup from a laptop on the public internet, or assuming that adding the private endpoint IP to the project IP access list is a required step for AWS PrivateLink.

The tester's own machine is the easiest client available, so failures are attributed to Atlas rather than to the network path being tested. Candidates also carry over the habit that 'every client IP must be allowlisted', which is not how private endpoints behave.

What to do instead

Always test from a host inside the same network path the application uses (a bastion or workload in the peered VPC), and read the timeout versus refused distinction. For AWS PrivateLink and Azure Private Link, connections that arrive through the private endpoint are not evaluated against the IP access list, so no endpoint IP entry is needed; keep IP access list entries only for clients that genuinely connect from public addresses.

Mistake 4

Standing up VPC peering without verifying CIDR disjointness and without adding the return route: accepting a peering connection and then debugging 'why is the cluster unreachable' instead of checking route tables, security groups, and DNS.

Peering is presented as a two-click action, so the prerequisites (non-overlapping address space, routes in both directions, security-group rules, and for private DNS the right resolution path) are skipped. Overlapping CIDRs cannot be fixed after the fact, which turns a small planning miss into a rebuild.

What to do instead

Before you build, inventory the CIDRs of both VPCs and the Atlas project VPC and confirm no overlap. After the peering connection is accepted, add a route in your VPC route table pointing the Atlas CIDR at the peering connection, allow traffic on port 27017 in the relevant security group, and verify resolution of the cluster hostnames from an in-VPC host. If CIDRs do overlap, switch to a private endpoint architecture instead of peering.

Mistake 5

Relying on the out-of-the-box alerting: leaving the default project alerts untouched, never adding disk-utilization or replication-lag alerts, and being unable to say which recipients receive which alert when someone asks whether the DBA team was paged.

Defaults produce some coverage, and notification goes to project owners, so the team assumes alerting 'works' and never audits it. Candidates also blur project-level alerts (cluster, host, and database metrics) with organization-level alerts (billing and access-list changes), and cannot map an alert to its delivery target.

What to do instead

Design the alert set deliberately: enable alerts for disk utilization thresholds at both a warning and critical level, replication lag against your RPO, connections at a percentage of the limit, normal-op counter spikes, and query-targeting ratios, and route them to a team destination (PagerDuty, Slack, or webhook) rather than an individual owner's inbox. Document which alerts are project-scoped and which are organization-scoped, and test the notification path by triggering a low-threshold alert.

Mistake 6

Misreading the performance tooling: quoting Performance Advisor suggestions as if the profiler were always running, enabling the Query Profiler on a production cluster with no plan to disable it, and confusing 'documents examined to documents returned' with 'documents scanned per index key'.

The tools are visual and easy to read superficially, and candidates do not know that the profiler is opt-in with a collection-time cost while Performance Advisor works from the slow-query logs at the configured slow-operation threshold. They then misattribute a query's cost to the wrong metric.

What to do instead

Know the mechanics before interpreting output: Performance Advisor mines slow queries (default 100 ms) and can be tuned via the slow operation threshold without enabling the profiler; Query Profiler must be explicitly turned on, adds overhead, and writes to a capped system.profile collection, so enable it for a bounded investigation and turn it off afterwards. When judging a query, check keys examined versus documents returned (index efficiency) separately from documents examined versus documents returned (filter selectivity).

Mistake 7

Assuming snapshots are portable files and that point-in-time restore reaches back indefinitely: promising a restore to an arbitrary earlier month, planning to mount a snapshot on a non-Atlas host, or expecting a restore to land inside the existing production cluster.

On-premises habits (physical files, arbitrary retention) carry over, and the restore dialog's actual behaviour - creating a new cluster of a chosen tier and version - is only discovered during an incident. Candidates also forget that the recoverable window is bounded by the oplog or backup window actually retained for that cluster.

What to do instead

State the limits explicitly: continuous cloud backup point-in-time restore is bounded by the retained oplog window (and the cluster's backup configuration), retained snapshots expire on the configured policy, and a restore provisions a new cluster rather than overwriting the current one - plan the cutover (connection-string swap or rename) as a separate step. If you need data outside Atlas, use the supported snapshot download or an export from a running cluster, not a direct file copy. Rehearse one restore to a throwaway cluster so the timing and prerequisites are known.

Mistake 8

Writing automation against the Atlas Administration API without handling pagination, rate limits, or key scope: looping over 'all clusters in the org' from a single unpaginated response, hardcoding an organization-level API key into CI, and letting a failed call retry immediately in a tight loop.

The first successful call returns a plausible-looking result, so nobody checks the envelope for total counts, and rate limiting only shows up once the script runs at scale or in parallel. Organization keys are the easiest to create, so they get used everywhere by default.

What to do instead

Read the response envelope and paginate explicitly (page number and items-per-page) until you have the reported total, treat HTTP 429 as expected and implement exponential backoff with jitter, and cache results that do not change often. Use a dedicated API key per project/CI job with only the roles it needs, rotate and store it in a secret manager, and keep organization-level keys out of automation entirely.

Mistake 9

Treating a migration as a dump-and-restore: running mongodump against a live source while writes continue, migrating into an undersized target cluster, and only afterwards discovering that database users, roles, and some indexes did not come across as expected.

The tool is familiar and works on small data, so the cutover discipline (quiesce writes, verify counts, then switch the connection string) is skipped, and the checklist never covers what metadata a logical dump does not carry. Version and storage-engine compatibility between source and target are also unchecked until the load fails.

What to do instead

Choose the mechanism to match the requirement: use Atlas Live Migration for minimal-downtime moves (source must be reachable from Atlas over the network, version-compatible, and accessible with a user that can read the data and the oplog), and reserve dump/restore for small or offline datasets. In either case, size the target from measured working-set and disk usage, freeze writes at cutover, reconcile document counts per collection, and recreate database users and custom roles in Atlas explicitly because authentication objects are not migrated.

Mistake 10

Diagnosing every connection failure as an Atlas outage: escalating on the first timeout without distinguishing timeout from connection refused, without checking whether the cluster is paused, and without confirming the hostname resolves to the expected SRV/TXT records.

The error text reaching the application is generic, and the candidate jumps to the control plane (cluster status, support ticket) instead of walking the path from DNS to access list to authentication. Timeout and refused feel interchangeable when reading a stack trace.

What to do instead

Work the path in order: resolve the SRV/TXT records and confirm they are not blocked or stale, check whether the cluster or a node is paused or mid-election, check whether the client's current egress address is on the IP access list (a block typically manifests as a timeout, not a refusal, and removing an entry does not terminate existing connections), then check credentials and the auth mechanism. Confirm the same connection string works from an in-VPC host with mongosh to isolate client-side TLS or driver configuration.