Schema Design — Complete Guide
Schema Design — 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 47 of 100
Schema Design
Stack → Projects
Stack · 1 — Pieces · ~6 min · MEAN — & Databases
What is this?
Schema design chooses embedding vs referencing, denormalization, and shard keys for MeanVerse MongoDB collections.
Why should you care?
Bad shapes cause slow joins via $lookup or unbounded document growth.
See it live — copy this example
Paste into your MeanVerse project (Angular + Express + MongoDB), then run with ng serve / node / mongosh as noted.
const orderSchema = new Schema({
tenantId: String,
customerId: { type: Schema.Types.ObjectId, ref: 'Customer' },
items: [{
sku: String,
qty: Number,
priceCents: Number
}],
shipping: {
line1: String,
city: String,
zip: String
},
totalCents: Number
});
// embed items + snapshot address; reference customer for profile updates
What happened?
- Embed line items — bounded per order.
- Reference customer — single profile updates.
- Embed shipping snapshot — historical truth if customer moves.
Practice next
- List access patterns: by tenant, by customer, by date.
- Embed 1-few; reference 1-many unbounded.
- Avoid 16MB document limit on comment threads.
- Split reviews to separate collection with productId index.
- Add computed totalCents vs sum items in app layer.
Remember
Design for queries, not theoretical purity. Embed snapshot data; reference live profile. MeanVerse multi-tenant: tenantId on every doc.
E-commerce order history
Customer sees past orders with prices at purchase time.
Outcome: Embedded item prices survive catalog price changes.
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!