Bird
Raised Fist0
MongoDBquery~5 mins

Why advanced indexing matters in MongoDB - Performance Analysis

Choose your learning style10 modes available
Time Complexity: Why advanced indexing matters
O(log n + k)
Understanding Time Complexity

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.

Scenario Under Consideration

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.

Identify Repeating Operations

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.
How Execution Grows With Input

As the number of products grows, the query looks only at relevant index parts.

Input Size (n)Approx. Operations
10About 3-5 index checks
100About 10-15 index checks
1000About 20-30 index checks

Pattern observation: The work grows slowly because the index narrows the search quickly.

Final Time Complexity

Time Complexity: O(log n + k)

This means the query gets slower only a little as data grows, thanks to the index.

Common Mistake

[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.

Interview Connect

Understanding how indexes affect query speed shows you know how databases handle big data efficiently.

Self-Check

"What if we removed the index on price and only indexed category? How would the time complexity change?"

Practice

(1/5)
1. Why is advanced indexing important in MongoDB?
easy
A. It encrypts data for security.
B. It slows down data retrieval to save memory.
C. It deletes duplicate data automatically.
D. It makes data searches faster and more efficient.

Solution

  1. Step 1: Understand the role of indexing

    Indexing helps MongoDB find data quickly without scanning the entire collection.
  2. Step 2: Recognize the benefit of advanced indexing

    Advanced indexing techniques improve search speed and efficiency beyond basic indexes.
  3. Final Answer:

    It makes data searches faster and more efficient. -> Option D
  4. Quick Check:

    Advanced indexing = faster searches [OK]
Hint: Indexing speeds up searches by organizing data smartly [OK]
Common Mistakes:
  • Thinking indexing slows down queries
  • Confusing indexing with data encryption
  • Assuming indexing deletes duplicates
2. Which of the following is the correct way to create a compound index on fields age and name in MongoDB?
easy
A. db.collection.createIndex({age: 1, name: 1})
B. db.collection.createIndex([age, name])
C. db.collection.createIndex('age', 'name')
D. db.collection.createIndex({age & name})

Solution

  1. Step 1: Recall MongoDB syntax for compound indexes

    Compound indexes use an object with field names as keys and sort order as values.
  2. Step 2: Match syntax to options

    db.collection.createIndex({age: 1, name: 1}) correctly uses an object with age: 1 and name: 1 to create ascending indexes.
  3. Final Answer:

    db.collection.createIndex({age: 1, name: 1}) -> Option A
  4. Quick Check:

    Compound index syntax = object with fields [OK]
Hint: Use object with fields and 1 or -1 for compound indexes [OK]
Common Mistakes:
  • Using array instead of object for fields
  • Passing field names as strings without keys
  • Using invalid syntax like '&' operator
3. Given a collection with a unique index on email, what happens if you try to insert two documents with the same email value?
medium
A. The second insert fails with a duplicate key error.
B. Both documents are inserted without error.
C. MongoDB automatically changes the second email to be unique.
D. The first document is deleted and replaced by the second.

Solution

  1. Step 1: Understand unique index behavior

    A unique index prevents duplicate values in the indexed field.
  2. Step 2: Predict insertion result

    Inserting a duplicate value causes MongoDB to reject the second insert with an error.
  3. Final Answer:

    The second insert fails with a duplicate key error. -> Option A
  4. Quick Check:

    Unique index blocks duplicates = error on second insert [OK]
Hint: Unique index stops duplicates, second insert errors [OK]
Common Mistakes:
  • Assuming MongoDB auto-fixes duplicates
  • Thinking both inserts succeed
  • Believing first document gets replaced
4. You created an index on username but your queries on username are still slow. What could be a possible reason?
medium
A. Indexes always slow down queries.
B. MongoDB does not support indexing on strings.
C. The index was created with the wrong field name.
D. You need to restart MongoDB to activate indexes.

Solution

  1. Step 1: Check index correctness

    If the index field name is wrong, queries won't use the index and remain slow.
  2. Step 2: Evaluate other options

    MongoDB supports string indexes, indexes speed up queries, and no restart is needed.
  3. Final Answer:

    The index was created with the wrong field name. -> Option C
  4. Quick Check:

    Wrong index field = no speedup [OK]
Hint: Verify index field matches query field exactly [OK]
Common Mistakes:
  • Believing MongoDB can't index strings
  • Thinking indexes slow queries
  • Restarting MongoDB unnecessarily
5. You have a collection with millions of documents. You want to speed up queries filtering by status and createdAt. Which indexing strategy is best?
hard
A. Create separate single-field indexes on status and createdAt.
B. Create a compound index on {status: 1, createdAt: -1}.
C. Create a unique index on status.
D. Do not create any index to save disk space.

Solution

  1. Step 1: Understand query filtering needs

    Queries filter by both status and createdAt, so a compound index helps.
  2. Step 2: Compare indexing options

    A compound index on both fields supports queries filtering on both efficiently, better than separate indexes.
  3. Step 3: Consider uniqueness and disk space

    Unique index on status is not suitable since status likely repeats; skipping indexes slows queries.
  4. Final Answer:

    Create a compound index on {status: 1, createdAt: -1}. -> Option B
  5. Quick Check:

    Compound index matches multi-field queries [OK]
Hint: Use compound index for multi-field query filters [OK]
Common Mistakes:
  • Using unique index on non-unique field
  • Relying on separate indexes for multi-field queries
  • Avoiding indexes to save space but hurting speed
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard