MongoDB Schema Validation : A Beginner’s Guide
MongoDB Schema Validation Explained with Practical Example
Introduction
MongoDB is a NoSQL database that allows flexible document structures. However, to ensure data consistency and quality, we can apply schema validation. In this blog, I’ll explain how I implemented schema validation on a student performance dataset using MongoDB Compass, step by step.
What is Schema Validation?
MongoDB allows inserting documents without enforcing a strict schema, but in real-world applications, we often need rules to control the data structure.Schema validation helps ensure:
Only allowed data types are stored (e.g., string, int)
Certain fields are required
Values stay within expected ranges
Invalid documents are rejected before insertion
Dataset Overview
The dataset used was about student performance, including fields like:
Hours\_Studied
Attendance
Sleep\_Hours
Exam\_Score
Internet\_Access
Gender
And more (total of 20 fields)
This data helps understand what factors impact exam scores.
Steps to Apply Schema Validation in MongoDB Compass
Step 1: Open MongoDB Compass
Connect to your database and select the collection. In this case, the collection is named `student_performance`.
Step 2: Navigate to the “Validation” Tab
Click the “Validation” tab at the top.
Step 3: Add the Validation Schema
Paste your JSON schema into the textbox. Here's the schema I used:
json
{
"$jsonSchema": {
"bsonType": "object",
"required": [
"Hours_Studied", "Attendance", "Parental_Involvement",
"Access_to_Resources", "Sleep_Hours", "Previous_Scores",
"Motivation_Level", "Internet_Access", "Tutoring_Sessions",
"Family_Income", "Teacher_Quality", "School_Type",
"Peer_Influence", "Physical_Activity", "Learning_Disabilities",
"Parental_Education_Level", "Distance_from_Home", "Gender",
"Exam_Score"
],
"properties": {
"Hours_Studied": { "bsonType": "int", "minimum": 0, "maximum": 30 },
"Attendance": { "bsonType": "int", "minimum": 0, "maximum": 100 },
"Parental_Involvement": { "bsonType": "string", "enum": ["Low", "Medium", "High"] },
"Access_to_Resources": { "bsonType": "string", "enum": ["Low", "Medium", "High"] },
"Sleep_Hours": { "bsonType": "int", "minimum": 4, "maximum": 12 },
"Previous_Scores": { "bsonType": "int", "minimum": 0, "maximum": 100 },
"Motivation_Level": { "bsonType": "string", "enum": ["Low", "Medium", "High"] },
"Internet_Access": { "bsonType": "string", "enum": ["Yes", "No"] },
"Tutoring_Sessions": { "bsonType": "int", "minimum": 0 },
"Family_Income": { "bsonType": "string", "enum": ["Low", "Medium", "High"] },
"Teacher_Quality": { "bsonType": "string", "enum": ["Low", "Medium", "High"] },
"School_Type": { "bsonType": "string", "enum": ["Public", "Private"] },
"Peer_Influence": { "bsonType": "string", "enum": ["Negative", "Neutral", "Positive"] },
"Physical_Activity": { "bsonType": "int", "minimum": 0, "maximum": 7 },
"Learning_Disabilities": { "bsonType": "string", "enum": ["Yes", "No"] },
"Parental_Education_Level": { "bsonType": "string", "enum": ["High School", "College", "Postgraduate"] },
"Distance_from_Home": { "bsonType": "string", "enum": ["Near", "Moderate", "Far"] },
"Gender": { "bsonType": "string", "enum": ["Male", "Female"] },
"Exam_Score": { "bsonType": "int", "minimum": 35, "maximum": 100 }
}
}
}
Click **Confirm** after pasting the schema.
Testing the Schema
Valid Document Example
json
{
"Hours_Studied": 22,
"Attendance": 92,
"Parental_Involvement": "Medium",
"Access_to_Resources": "High",
"Extracurricular_Activities": "Yes",
"Sleep_Hours": 7,
"Previous_Scores": 88,
"Motivation_Level": "High",
"Internet_Access": "Yes",
"Tutoring_Sessions": 2,
"Family_Income": "Medium",
"Teacher_Quality": "High",
"School_Type": "Private",
"Peer_Influence": "Positive",
"Physical_Activity": 3,
"Learning_Disabilities": "No",
"Parental_Education_Level": "College",
"Distance_from_Home": "Moderate",
"Gender": "Female",
"Exam_Score": 81
}
This document inserts successfully because it follows all validation rules.
Invalid Document Example
json
{
"Hours_Studied": -5,
"Attendance": 105,
"Parental_Involvement": 2,
"Access_to_Resources": "Extreme",
"Extracurricular_Activities": "Sometimes",
"Sleep_Hours": "Seven",
"Previous_Scores": 89,
"Motivation_Level": "Medium",
"Internet_Access": "Maybe",
"Tutoring_Sessions": -1,
"Family_Income": "High",
"Teacher_Quality": "Medium",
"School_Type": "Govt",
"Peer_Influence": "Negative",
"Physical_Activity": 3,
"Learning_Disabilities": "Unknown",
"Parental_Education_Level": "Illiterate",
"Distance_from_Home": "Very Far",
"Gender": "Other",
"Exam_Score": 110
}
MongoDB Compass will reject this document with an error message because several fields violate the schema rules.
Conclusion
MongoDB Schema Validation is essential when working with structured data in dynamic applications. It prevents invalid data from being saved, ensures quality, and supports future data analysis and reporting.
If you're working with MongoDB in your projects, adding validation rules will help you maintain consistency and reliability from day one.
TEJAS MUSMADE
University: Shree Balaji University, Pune
School: School of Computer Studies
Course: BCA (Bachelor of Computer Applications)
Interests: NoSQL, MongoDB, and related technologies
Nice blog
ReplyDelete👍
DeleteGreat Work..
ReplyDeleteExcellent work
ReplyDeleteVery Informative blog✅
ReplyDeleteGreat write-up! This is a super helpful intro to schema validation in MongoDB. You’ve explained everything in a simple and beginner-friendly way, which makes it way easier to grasp. Loved the examples too really ties everything together. Keep sharing more like this!
ReplyDelete👍
DeleteVery good work
ReplyDeleteExcellent work ..nice blog explained in simple words 😁.. op bolte
ReplyDeleteGood work
ReplyDeleteGood 👍
ReplyDelete👍🏻👍🏻
ReplyDeleteExcellent Work 👍
ReplyDeleteVery helpful
ReplyDelete