Document validation
MongoDB schema-гүй ч validation дүрэм тавьж collection-д оруулах өгөгдлийн форматыг баталгаажуулж болно. $jsonSchema ашиглан талбарын төрөл, шаардлагатай талбарууд, утгын хязгаарыг тодорхойлно.
Validation үүсгэх
Collection үүсгэхдээ validator тавина:
db.createCollection("users", {
validator: {
$jsonSchema: {
bsonType: "object",
required: ["username", "email", "age"],
properties: {
username: {
bsonType: "string",
description: "Хэрэглэгчийн нэр — заавал string байх ёстой",
},
email: {
bsonType: "string",
pattern: "^.+@.+\\..+$",
description: "Зөв и-мэйл формат шаардлагатай",
},
age: {
bsonType: "int",
minimum: 0,
maximum: 120,
description: "Нас 0–120 хооронд байх ёстой",
},
},
},
},
});
required — заавал байх талбарууд
required: ["username", "email", "age"];
Жагсаалтад байгаа талбаруудын аль нэг дутуу бол insert алдаа өгнө.
bsonType — өгөгдлийн төрөл
Нийтлэг bsonType утгууд:
| bsonType | Тайлбар |
| ------------ | ------------------ |
| "string" | Текст |
| "int" | Бүхэл тоо (32-bit) |
| "double" | Аравтын бутархай |
| "bool" | true / false |
| "date" | Огноо |
| "objectId" | ObjectId |
| "array" | Массив |
| "object" | Nested object |
properties: {
price: { bsonType: "double" },
stock: { bsonType: "int" },
isFeatured:{ bsonType: "bool" },
createdAt: { bsonType: "date" },
authorId: { bsonType: "objectId" }
}
minimum, maximum — тоон хязгаар
properties: {
rating: {
bsonType: "int",
minimum: 1,
maximum: 5,
description: "Үнэлгээ 1–5 байх ёстой"
},
price: {
bsonType: "double",
minimum: 0,
description: "Үнэ 0-с бага байж болохгүй"
}
}
enum — зөвшөөрөгдсөн утгуудын жагсаалт
properties: {
status: {
bsonType: "string",
enum: ["active", "inactive", "pending"],
description: "Зөвхөн тодорхой утгуудыг зөвшөөрнө"
},
role: {
bsonType: "string",
enum: ["user", "admin", "moderator"]
}
}
Массивын validation
properties: {
skills: {
bsonType: "array",
minItems: 1,
maxItems: 20,
uniqueItems: true,
items: {
bsonType: "string"
}
}
}
Validation action — алдаа эсвэл анхааруулга
validationAction нь validation дүрэм зөрчигдөхөд хэрхэн хариу үзүүлэхийг тодорхойлно:
db.createCollection("users", {
validator: { $jsonSchema: { ... } },
validationAction: "error" // "error" (default) эсвэл "warn"
})
"error"— validation зөрчигдвөл insert/update цуцлагдана (алдаа өгнө)"warn"— insert/update амжилттай болж гэхдээ MongoDB-ийн log-д анхааруулга бичнэ
Хөгжүүлэлтийн шатанд "warn" ашиглаад, production-д "error" болгох нь нийтлэг дадал.
Байгаа collection-д validation нэмэх
collMod командаар одоо байгаа collection-д validation нэмж болно:
db.runCommand({
collMod: "users",
validator: {
$jsonSchema: {
bsonType: "object",
required: ["username", "email"],
properties: {
username: { bsonType: "string" },
email: { bsonType: "string" },
},
},
},
validationAction: "error",
});
Validation шалгах
Зөв мэдээлэл:
// ✅ Амжилттай — бүх дүрэм биелсэн
db.users.insertOne({
username: "bold",
email: "bold@example.com",
age: 25,
});
Буруу мэдээлэл:
// ❌ Алдаа — age байхгүй (required), email формат буруу
db.users.insertOne({
username: "dorj",
email: "not-an-email",
age: -5, // minimum: 0 зөрчив
});
// MongoServerError: Document failed validation
Дараагийн хичээлд:
Олон document-д нэгэн зэрэг, алдааш, амжилттай хийгддэг transaction-ийн талаар үзнэ.