Compound Indexes
Compound Indexes: 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 42 of 100
Compound Indexes
Foundations & CRUD ✓ → Queries & Schema → Aggregation & Scale → Atlas & Projects
Queries & Schema · 2 — Design · ~6 min · MongoDB — Indexing & Performance
What is this?
A compound index includes multiple fields in order, like { tenantId: 1, status: 1, createdAt: -1 }. Field order matters — equality fields first, then sort/range fields.
Why should you care?
Multi-tenant lists almost always filter tenantId + status and sort by time. One compound index can serve that entire pattern.
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.orders.createIndex({ tenantId: 1, status: 1, createdAt: -1 })
db.orders.find({ tenantId: "acme", status: "open" }).sort({ createdAt: -1 }).limit(20)
db.orders.find({ tenantId: "acme", status: "open" }).explain("executionStats")
Run Example »
Edit the code below and click Run to see the result in Toolliyo’s live editor.
What happened?
- The index prefix tenantId + status matches the filter; createdAt: -1 supports the sort.
- explain should avoid an in-memory sort when the index fits.
- Queries that skip tenantId cannot use this index efficiently.
Practice next
- Create the compound index.
- Run the find+sort and check explain.
- Query only { status: "open" } and see a worse plan.
- Add customerId after tenantId for support views.
- Compare with two separate single indexes — usually worse for this query.
Remember
Compound indexes serve multi-field filters + sorts. Order is Equality → Sort → Range. Prefixes of the index can still be used.
Tenant order inbox
B2B ops opens open orders newest first for their tenant.
Outcome: One IXSCAN returns the page without sorting in RAM.
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!