MongoDB-র flexible schema একটা শক্তি, কিন্তু real application সাধারণত এখনও কিছু guarantee চায় — একটা users collection যেখানে প্রতিটা document-এ একটা email থাকা প্রয়োজন। Schema validation আপনাকে ঠিক আপনার বেছে নেওয়া নিয়ম বলবৎ করতে দেয়, আর তার বেশি না।
db.createCollection("users", {
validator: {
$jsonSchema: {
bsonType: "object",
required: ["name", "email"],
properties: {
name: { bsonType: "string" },
email: { bsonType: "string", pattern: "^.+@.+$" },
age: { bsonType: "int", minimum: 0 }
}
}
}
})একটা required নিয়ম ভাঙা একটা document insert করার চেষ্টা সংরক্ষিত হওয়ার বদলে একটা validation error দিয়ে ব্যর্থ হয়:
db.users.insertOne({ name: "Test User" })
// Error: Document failed validation — "email" প্রয়োজনcollMod ইতিমধ্যে বিদ্যমান একটা collection-এ একটা validator apply করে:
db.runCommand({
collMod: "users",
validator: {
$jsonSchema: {
required: ["email"]
}
}
})বিদ্যমান document retroactively চেক হয় না
Default হিসেবে, validation নতুন insert আর update-এ apply হয় কিন্তু collection-এ ইতিমধ্যে থাকা document retroactively চেক করে না — বিদ্যমান data যা নতুন নিয়মে ব্যর্থ হবে ঠিক যেমন আছে তেমনই থাকে যতক্ষণ না এটা update হয় বা আপনি validationLevel: "strict" set করেন।