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

MongoDB সংগ্রহে প্রাইমারি কী (_id) পরিবর্তন করা

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" }

কোড ব্যাখ্যা

  1. var next = db.demo41.find(): কার্সর অবজেক্ট স্টোর করা।
  2. forEach: প্রতিটি ডকুমেন্টের জন্য ফাংশন রান করা।
  3. var prevId = s._id: পুরনো _id সংরক্ষণ।
  4. delete s._id: ডকুমেন্ট থেকে _id মুছে ফেলা (নতুন _id জেনারেট হবে)।
  5. db.demo41.insert(s): নতুন _id সহ ডকুমেন্ট ইনসার্ট।
  6. db.demo41.remove(prevId): পুরনো ডকুমেন্ট ডিলিট।

সতর্কতা

  • বড় কালেকশনে এটি ধীর এবং রিস্কি।
  • রেফারেন্স করা ডকুমেন্ট থাকলে ব্রেক হয়ে যাবে।
  • প্রোডাকশনে করার আগে ব্যাকআপ নিন।
  • MongoDB ৪.২+ এ $merge বা $out ব্যবহার করে আপডেট করা ভালো।
  1. MongoDB-এ কালেকশন থেকে সর্বোচ্চ মান বের করা

  2. MongoDB-এ ক্যাপড কালেকশন ব্যবহার করে ডকুমেন্ট সংখ্যা লিমিট করা

  3. MySQL-এ প্রাইমারি কী অটোমেটিক্যালি ইনডেক্সড হয় কিনা?

  4. C#-এ StringDictionary-এ কিগুলোর কালেকশন পাওয়া (Keys প্রপার্টি)