MongoDB-এ কালেকশন লেভেলে JSON Schema Validation ব্যবহার করে ডেটা ইন্টিগ্রিটি নিশ্চিত করা
MongoDB 3.2+ ভার্সন থেকে createCollection()-এ validator অপশন দিয়ে ডকুমেন্ট ভ্যালিডেশন রুল প্রয়োগ করা যায়। এটি ইনসার্ট এবং আপডেট সময় ডেটা কোয়ালিটি নিশ্চিত করে।
১. ভ্যালিডেটর সহ কালেকশন তৈরি (FirstName স্ট্রিং এবং আবশ্যক)
> db.createCollection("demo356", {validator: {
$and: [ {"FirstName": { $type: "string", $exists: true }} ]
}});
{ "ok" : 1 }
ব্যাখ্যা:
validator- ভ্যালিডেশন রুল ডেফাইন করে।$and- একাধিক শর্ত কম্বাইন করে।$type: "string"- ফিল্ডটি স্ট্রিং টাইপ হতে হবে।$exists: true- ফিল্ডটি অবশ্যই থাকতে হবে।
২. বৈধ ডকুমেন্ট ইনসার্ট (সফল)
> db.demo356.insertOne({"FirstName":"Chris"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e568d49f8647eb59e5620c7") }
৩. অবৈধ ডকুমেন্ট ইনসার্ট চেষ্টা (FirstName: 909 - নম্বর)
> db.demo356.insertOne({"FirstName":909});
2020-02-26T20:52:58.497+0530 E QUERY [js] WriteError: Document failed validation
WriteError({ "index" : 0, "code" : 121, "errmsg" : "Document failed validation", "op" : { "_id" : ObjectId("5e568d52f8647eb59e5620c8"), "FirstName" : 909 } })
ফলাফল: WriteError: Document failed validation (Code 121)। নম্বর (909) স্ট্রিং নয়, তাই রিজেক্ট হয়েছে।
৪. বর্তমান ডকুমেন্ট (শুধু বৈধটি)
> db.demo356.find();
আউটপুট:
অতিরিক্ত অপশন:
validationLevel: "strict"(ডিফল্ট) - সব ইনসার্ট/আপডেটে চেক।validationLevel: "moderate"- শুধু ইনসার্ট এবং আপডেটে (যে ফিল্ড আপডেট হচ্ছে) চেক।validationAction: "error"(ডিফল্ট) - রিজেক্ট করে।"warn"- লগ করে কিন্তু আপডেট দিয়ে দেয়।- JSON Schema (Draft 4/7) ব্যবহার করে আরও জটিল ভ্যালিডেশন করা যায় (
$jsonSchema)।