Why advanced indexing matters in MongoDB - Performance Analysis
When we use advanced indexing in MongoDB, it changes how fast queries run as data grows.
We want to see how indexing affects the work the database does when searching.
Analyze the time complexity of this MongoDB query using an index.
db.products.createIndex({ category: 1, price: -1 });
const results = db.products.find({ category: "books", price: { $lt: 20 } });
This code creates an index on category and price fields, then finds products in "books" category priced below 20.
Look at what repeats when the query runs.
- Primary operation: Scanning the index entries matching the category and price condition.
- How many times: Once per matching index entry, not all documents.
As the number of products grows, the query looks only at relevant index parts.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 | About 3-5 index checks |
| 100 | About 10-15 index checks |
| 1000 | About 20-30 index checks |
Pattern observation: The work grows slowly because the index narrows the search quickly.
Time Complexity: O(log n + k)
This means the query gets slower only a little as data grows, thanks to the index.
[X] Wrong: "Adding an index makes queries instantly fast no matter what."
[OK] Correct: Some queries don't use indexes well, and indexes add small overhead when writing data.
Understanding how indexes affect query speed shows you know how databases handle big data efficiently.
"What if we removed the index on price and only indexed category? How would the time complexity change?"
Practice
Solution
Step 1: Understand the role of indexing
Indexing helps MongoDB find data quickly without scanning the entire collection.Step 2: Recognize the benefit of advanced indexing
Advanced indexing techniques improve search speed and efficiency beyond basic indexes.Final Answer:
It makes data searches faster and more efficient. -> Option DQuick Check:
Advanced indexing = faster searches [OK]
- Thinking indexing slows down queries
- Confusing indexing with data encryption
- Assuming indexing deletes duplicates
age and name in MongoDB?Solution
Step 1: Recall MongoDB syntax for compound indexes
Compound indexes use an object with field names as keys and sort order as values.Step 2: Match syntax to options
db.collection.createIndex({age: 1, name: 1}) correctly uses an object withage: 1andname: 1to create ascending indexes.Final Answer:
db.collection.createIndex({age: 1, name: 1}) -> Option AQuick Check:
Compound index syntax = object with fields [OK]
- Using array instead of object for fields
- Passing field names as strings without keys
- Using invalid syntax like '&' operator
email, what happens if you try to insert two documents with the same email value?Solution
Step 1: Understand unique index behavior
A unique index prevents duplicate values in the indexed field.Step 2: Predict insertion result
Inserting a duplicate value causes MongoDB to reject the second insert with an error.Final Answer:
The second insert fails with a duplicate key error. -> Option AQuick Check:
Unique index blocks duplicates = error on second insert [OK]
- Assuming MongoDB auto-fixes duplicates
- Thinking both inserts succeed
- Believing first document gets replaced
username but your queries on username are still slow. What could be a possible reason?Solution
Step 1: Check index correctness
If the index field name is wrong, queries won't use the index and remain slow.Step 2: Evaluate other options
MongoDB supports string indexes, indexes speed up queries, and no restart is needed.Final Answer:
The index was created with the wrong field name. -> Option CQuick Check:
Wrong index field = no speedup [OK]
- Believing MongoDB can't index strings
- Thinking indexes slow queries
- Restarting MongoDB unnecessarily
status and createdAt. Which indexing strategy is best?Solution
Step 1: Understand query filtering needs
Queries filter by bothstatusandcreatedAt, so a compound index helps.Step 2: Compare indexing options
A compound index on both fields supports queries filtering on both efficiently, better than separate indexes.Step 3: Consider uniqueness and disk space
Unique index onstatusis not suitable sincestatuslikely repeats; skipping indexes slows queries.Final Answer:
Create a compound index on {status: 1, createdAt: -1}. -> Option BQuick Check:
Compound index matches multi-field queries [OK]
- Using unique index on non-unique field
- Relying on separate indexes for multi-field queries
- Avoiding indexes to save space but hurting speed
Ready to prove it?
Pass the test and this pattern moves unknown
