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

MongoDB-এ _id ফিল্ড আপডেট করা

MongoDB-এ _id ফিল্ড ইমিউটেবল (পরিবর্তনযোগ্য নয়) - একবার তৈরি হলে সরাসরি আপডেট করা যায় না। _id পরিবর্তন করতে হলে নতুন _id সহ ডকুমেন্ট ইনসার্ট করে পুরনো ডকুমেন্টটি ডিলিট করতে হয়।

নমুনা কালেকশন তৈরি

> db.updatingDemo.insertOne({ "StudentName": "Robert" });
{ "acknowledged": true, "insertedId": ObjectId("5e04dae5150ee0e76c06a04b") }

> db.updatingDemo.insertOne({ "StudentName": "Bob" });
{ "acknowledged": true, "insertedId": ObjectId("5e04dae7150ee0e76c06a04c") }

ডকুমেন্টগুলো দেখানো

> db.updatingDemo.find();

আউটপুট:

{ "_id": ObjectId("5e04dae5150ee0e76c06a04b"), "StudentName": "Robert" }
{ "_id": ObjectId("5e04dae7150ee0e76c06a04c"), "StudentName": "Bob" }

_id আপডেট করার প্রক্রিয়া

> myDocument = db.updatingDemo.findOne({ "StudentName": "Bob" });
{ "_id": ObjectId("5e04dae7150ee0e76c06a04c"), "StudentName": "Bob" }

> myDocument._id = 1001;
1001

> db.updatingDemo.insert(myDocument);
WriteResult({ "nInserted": 1 })

> db.updatingDemo.remove({ _id: ObjectId("5e04dae7150ee0e76c06a04c") });
WriteResult({ "nRemoved": 1 })

ফলাফল যাচাই

> db.updatingDemo.find();

আউটপুট:

{ "_id": ObjectId("5e04dae5150ee0e76c06a04b"), "StudentName": "Robert" }
{ "_id": 1001, "StudentName": "Bob" }

ব্যাখ্যা:

  1. findOne() দিয়ে ডকুমেন্ট ভেরিয়েবলে সংরক্ষণ।
  2. myDocument._id = 1001 - নতুন _id সেট করা (যেকোনো ভ্যালু হতে পারে: স্ট্রিং, নাম্বার, ObjectId)।
  3. insert() - নতুন _id সহ ডকুমেন্ট ইনসার্ট।
  4. remove() - পুরনো _id वाले ডকুমেন্ট ডিলিট।

সতর্কতা

  • এই পদ্ধতিতে রেফারেন্স ইন্টিগ্রিটি বজায় রাখা কঠিন (অন্য কালেকশন থেকে রেফারেন্স থাকলে)।
  • ট্রানজ্যাকশন (MongoDB ৪.০+) ব্যবহার করাই ভালো।
  • _id ম্যানুয়ালি সেট করার সময় ইউনিকনেস নিশ্চিত করুন।

বিকল্প: replaceOne()

db.updatingDemo.replaceOne(
  { _id: ObjectId("5e04dae7150ee0e76c06a04c") },
  { _id: 1001, "StudentName": "Bob" }
);

একটি অ্যাটোমিক অপারেশনে রিপ্লেস করে, কিন্তু _id পরিবর্তন সাপোর্ট করে না (এরর দেবে)। তাই ইনসার্ট+রিমুভ পদ্ধতিই বাধ্যতামূলক।

  1. MongoDB-এ আপডেট অপারেশন দিয়ে ফিল্ডকে অ্যারে-তে রূপান্তর

  2. MongoDB-এ নির্দিষ্ট ফিল্ড দিয়ে সার্চ করা

  3. MongoDB-তে প্রজেক্ট ফিল্ড ব্যবহার করা

  4. MongoDB-তে find()-এ প্রজেকশন দিয়ে _id ফিল্ড হাইড করা