Query Optimization Basics
Query Optimization Basics: free step-by-step lesson with examples, common mistakes, and interview tips — part of MongoDB Tutorial on Toolliyo Academy.
On this page
MongoDB Tutorial · Lesson 20 of 100
Query Optimization Basics
Foundations & CRUD → Queries & Schema → Aggregation & Scale → Atlas & Projects
Foundations & CRUD · 1 — Documents · ~6 min · MongoDB — CRUD Operations
What is this?
Query optimization means helping MongoDB find documents without scanning the whole collection. Indexes, selective filters, and projections are the first tools. explain() shows whether a query used an index.
Why should you care?
A products.find on 5 million SKUs without an index can freeze the category page during a sale. Basics here prevent that.
See it live — copy this example
Open mongosh or MongoDB Compass, select database nosqlverse, then run the example. Change one field and run again.
db.products.createIndex({ category: 1, price: 1 })
db.products.find({ category: "accessories", price: { $lte: 2000 } }).explain("executionStats")
Run Example »
Edit the code below and click Run to see the result in Toolliyo’s live editor.
What happened?
- createIndex builds a compound index on category then price.
- find uses that shape.
- explain("executionStats") shows stage IXSCAN vs COLLSCAN and how many docs were examined.
Practice next
- Insert ~20 products across categories if the collection is tiny.
- Run the find without an index and inspect explain.
- Create the compound index and explain again.
- Find only on price and see if the compound index helps.
- Drop the index with dropIndex and re-compare.
Remember
Use indexes for frequent filters. explain() reveals COLLSCAN vs IXSCAN. Match index field order to your query.
Sale-day category API
Engineering indexes (category, price) before Big Billion Days after explain showed COLLSCAN.
Outcome: p95 latency drops from seconds to milliseconds.
Interview prep for this lesson
Practice these questions aloud after reading—each links to a full structured answer.
Sign in to ask a question or upvote helpful answers.
No questions yet — be the first to ask!