কম্পিউটার টিউটোরিয়াল

MongoDB-এ ডকুমেন্ট ভ্যালিডেশন (Validation) ইনসার্ট/আপডেটের আগে


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)।

  1. MongoDB-তে ডেটা ইনসার্ট করার পদ্ধতি

  2. MongoDB-এ একাধিক ডকুমেন্ট মার্জ করার পদ্ধতি

  3. MongoDB-এ ডকুমেন্ট আপডেট করার পদ্ধতি

  4. MongoDB-এ bulkWrite() দিয়ে এক কোয়েরিতে একাধিক ডকুমেন্ট আপডেট করা