MongoDB-এ প্রাইমারি কী (_id) পরিবর্তন করার পদ্ধতি
MongoDB-এ একবার ডকুমেন্ট ইনসার্ট হলে তার _id ফিল্ড আপডেট করা যায় না। প্রাইমারি কী পরিবর্তন করতে হলে ডকুমেন্টটি ডিলিট করে নতুন _id সহ পুনরায় ইনসার্ট করতে হয়। এটি forEach() লুপ ব্যবহার করে করা যায়।
উদাহরণ: একটি ডকুমেন্ট তৈরি
> db.demo41.insertOne({"StudentName":"Carol"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e25ce4acfb11e5c34d898e3") }
বদল করার আগে
> db.demo41.find();
{ "_id" : ObjectId("5e25ce4acfb11e5c34d898e3"), "StudentName" : "Carol" }
প্রাইমারি কী পরিবর্তন করার কুয়েরি
> var next = db.demo41.find()
> next.forEach(function(s) {
var prevId = s._id;
delete s._id;
db.demo41.insert(s);
db.demo41.remove(prevId);
});
বদল করার পর (নতুন _id)
> db.demo41.find();
{ "_id" : ObjectId("5e25cee5cfb11e5c34d898e4"), "StudentName" : "Carol" }
কোড ব্যাখ্যা
var next = db.demo41.find(): কার্সর অবজেক্ট স্টোর করা।forEach: প্রতিটি ডকুমেন্টের জন্য ফাংশন রান করা।var prevId = s._id: পুরনো _id সংরক্ষণ।delete s._id: ডকুমেন্ট থেকে _id মুছে ফেলা (নতুন _id জেনারেট হবে)।db.demo41.insert(s): নতুন _id সহ ডকুমেন্ট ইনসার্ট।db.demo41.remove(prevId): পুরনো ডকুমেন্ট ডিলিট।
সতর্কতা
- বড় কালেকশনে এটি ধীর এবং রিস্কি।
- রেফারেন্স করা ডকুমেন্ট থাকলে ব্রেক হয়ে যাবে।
- প্রোডাকশনে করার আগে ব্যাকআপ নিন।
- MongoDB ৪.২+ এ
$mergeবা$outব্যবহার করে আপডেট করা ভালো।