MongoDB Interview Questions
Author: Paolo Miguel Besabella
MongoDB is an open-source NoSQL document database. It is designed using JavaScript and leverages the object-style data model, making the integration of JavaScript applications with MongoDB extremely simple.
Getting a job as a MongoDB developer can be challenging as there are many different variations in the job description. Therefore, you should prepare for a variety of different scenarios.
In this article, we have put together a list of MongoDB interview questions. They cover a range of topics from the basics to advanced concepts. I hope you find them useful as you prepare for your next interview!
Interview Question 1: What is an ACID-compliant database?
An ACID-compliant database provides four essential properties of a transaction. These are atomicity, consistency, isolation, and durability (ACID).
- Atomicity - either all or none of the changes will be reflected in the database.
- Consistency - any operation takes the database from one valid state to another. There are no invalid operations.
- Invariant - once a transaction is committed, it stays committed.
- Isolation - transactions appear instantaneous to an outside observer Durability - data written to disk will not be lost unless there’s a power outage or other catastrophic event.
Interview Question 2: What is a Replica Set?
A replica set consists of two or more mongod instances. The members of the replica set maintain an identical copy of data and handle read and write operations independently.
When you run a mongod as part of a replica set, it will automatically select one member as the primary (the default is the first member) and any other members will be backups. A replica set can either have all its members be primaries simultaneously or it can choose to have some number of backups so that there are always at least N-1 copies of data available where N is the replication factor.
The only configuration change required for replica sets is to specify each member’s hostname when creating the group.
When you have a replica set, to read or write data, MongoDB uses an election process so that only one host is the primary at any particular time. All other hosts are secondaries. The current secondary can become the primary if it receives no communication from the current primary within 10 seconds. Once elected, the new primary will begin accepting traffic for all read and write operations.
Interview Question 3: What is Sharding?
Sharding is a technique of horizontal partitioning – splitting your data across multiple mongod instances. This allows you to store more data than would fit on one machine and maintain high availability by not requiring a single point of failure like with master-slave replication (although depending on your deployment needs you may still require a master-slave setup).
When should I shard?
You should consider sharding when you have large datasets, high write volumes, or high query rates. Sharding allows you to partition the dataset across multiple instances which can make queries faster by increasing parallelization capabilities.
Interview Question 4: How do you add a shard to a cluster?
When creating a cluster in the standalone mode, you specify its size by indicating the number of chunks it will contain.
To add a shard to an existing cluster in production, use the method to add shards described in the documentation. It is necessary that one (and only one) node becomes primary and starts accepting requests and making modifications while all other nodes become secondary and only handle read operations. Follow these steps:
- Choose one current primary as your new primary
- Make this newly elected primary write-able to force an election
- Point each current secondary at the newly elected primary so they can discover their roles
- If two or more servers were writing at the time of the primary election, wait until all but one stop writing.
- Make the remaining server with a write operation start acting as a secondary
- Repeat from step 1 until all servers have been forced to be either primaries or secondaries
Interview Question 5: What is Indexing?
Indexes in MongoDB are similar to indexes in SQL databases except you don’t create indexes explicitly - instead, they’re created automatically when a document is inserted into a collection that has an index defined on its _id field.
Creating rules for how documents should be indexed can greatly improve query times by allowing find queries to only receive relevant results rather than needing to scan over all documents in a collection looking for matches.
For instance, if you have a collection of users with duplicate information in various fields but want to find all matching users by _id, creating an index on the _id field would allow this query to only scan the single index rather than performing a full table scan.
Note that indexes are one-way only - they cannot be used to retrieve data.
Indexes are most useful for queries using simple filters which can typically be expressed as lookup keys or indexed expressions. You should always keep in mind your usage patterns when developing applications since having too many indexes can actually slow down writes due to additional overhead caused by disk access and maintaining them.
Interview Question 6: What is Aggregation? How is it different from MapReduce?
Aggregation is an array of methods that can be used to create and modify documents within a database. Some examples include $group , $unwind , $match and $project .
These functions are similar to the Unix command-line utility: grep. The concept is very simple: given a set of criteria, return only those documents which match your query. There’s no need to write custom MapReduce jobs or use external tools like Hadoop – you can do all of this right from MongoDB using its aggregation framework!
Concluding Thoughts on MongoDB Interview Questions
To conclude, MongoDB is a no-fluff powerhouse of a document database with a bright future ahead. Though the interview questions are very easy, it would be good to know about its concepts and their importance in different scenarios.