Indexing — Complete Guide
Indexing — Complete Guide: free step-by-step lesson with examples, common mistakes, and interview tips — part of MEAN Stack Tutorial on Toolliyo Academy.
On this page
MEAN Stack Tutorial · Lesson 45 of 100
Indexing
Stack → Projects
Stack · 1 — Pieces · ~6 min · MEAN — & Databases
What is this?
Indexes speed MongoDB queries by field values — B-tree indexes on tenantId, email, createdAt in MeanVerse collections.
Why should you care?
Full collection scans on 10M accounts timeout Express requests and anger customers.
See it live — copy this example
Paste into your MeanVerse project (Angular + Express + MongoDB), then run with ng serve / node / mongosh as noted.
// schema
accountSchema.index({ tenantId: 1, accountNumber: 1 }, { unique: true });
accountSchema.index({ tenantId: 1, createdAt: -1 });
// explain
const plan = await Account.find({ tenantId: 't_acme' }).sort({ createdAt: -1 }).limit(20).explain('executionStats');
// winningPlan.inputStage.stage should be IXSCAN not COLLSCAN
What happened?
- Compound index supports filter + sort.
- unique prevents duplicate account numbers per tenant.
- explain proves index use — COLLSCAN means add index.
Practice next
- Identify slow queries from logs.
- Create index matching filter prefix order.
- Run explain in staging before production.
- Add partial index { status: 1 } where status: 'active' only.
- Drop unused index after reviewing $indexStats.
Remember
Indexes trade write cost for read speed. Compound indexes follow equality-sort-range rule. Always explain critical MeanVerse queries.
Login by email
Auth query on tenantId + email was COLLSCAN at scale.
Outcome: Unique compound index cuts login latency from 2s to 15ms.
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!