Schema Validation
Schema Validation: 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 35 of 100
Schema Validation
Foundations & CRUD ✓ → Queries & Schema → Aggregation & Scale → Atlas & Projects
Queries & Schema · 2 — Design · ~6 min · MongoDB — Schema Design
What is this?
Schema validation uses JSON Schema rules on a collection so inserts/updates must match required fields and types. MongoDB stays flexible, but you can lock critical shapes.
Why should you care?
Payments and healthcare cannot accept orders missing total or patientId. Validation catches bad writes before they poison analytics.
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.createCollection("orders", {
validator: {
$jsonSchema: {
bsonType: "object",
required: ["userId", "total", "status"],
properties: {
userId: { bsonType: "objectId" },
total: { bsonType: ["double", "int", "decimal"], minimum: 0 },
status: { enum: ["placed", "paid", "shipped", "cancelled"] }
}
}
},
validationLevel: "moderate",
validationAction: "error"
})
db.orders.insertOne({ userId: ObjectId(), total: 499, status: "placed" })
Run Example »
Edit the code below and click Run to see the result in Toolliyo’s live editor.
What happened?
- createCollection attaches a $jsonSchema validator.
- required fields must exist.
- status must be one of the enum values.
- Invalid inserts error when validationAction is error.
Practice next
- Create orders with the validator (drop first if it exists in practice DB).
- Insert a valid order.
- Try insert without total — expect failure.
- Add required currency enum ["INR","USD"].
- Try validationAction: "warn" on a scratch collection.
Remember
$jsonSchema validates documents on write. Use required + types for critical collections. moderate level validates only new/changed fields.
Order integrity for finance
Checkout service cannot insert status "shipped" without going through payment — enum limits garbage states.
Outcome: Downstream billing jobs see only known statuses.
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!