#1 Data Analytics Program in India
₹2,499₹1,499Enroll Now
6 min read
Question 7 of 27medium

How do you design schemas in MongoDB?

Schema design patterns and best practices.

What You'll Learn

  • Embedding vs referencing
  • Design patterns
  • Best practices

Embedding vs Referencing

Embedding (Denormalization)

code.jsJavaScript
// User with embedded addresses
{
  _id: ObjectId("..."),
  name: "John",
  addresses: [
    { type: "home", city: "NYC", zip: "10001" },
    { type: "work", city: "Boston", zip: "02101" }
  ]
}

Referencing (Normalization)

code.jsJavaScript
// User document
{ _id: ObjectId("user1"), name: "John" }

// Separate orders collection
{ _id: ObjectId("order1"), userId: ObjectId("user1"), total: 99.99 }

When to Embed

  • One-to-few relationships
  • Data always accessed together
  • Data doesn't change frequently
  • Document size < 16MB

When to Reference

  • One-to-many (large) relationships
  • Many-to-many relationships
  • Data accessed independently
  • Frequently updated data

Design Patterns

Subset Pattern

code.jsJavaScript
// Store recent reviews embedded, rest in separate collection
{
  _id: 1,
  name: "Product",
  recentReviews: [...],  // Last 10
  reviewCount: 1000
}

Bucket Pattern

code.jsJavaScript
// Group time-series data
{
  sensorId: "temp-1",
  date: "2024-01-15",
  readings: [
    { time: "00:00", value: 22.5 },
    { time: "01:00", value: 22.3 }
  ]
}

Best Practices

  • Design for your queries
  • Avoid unbounded arrays
  • Consider document growth
  • Use appropriate indexes