MongoDB শেলে JavaScript-এর Math.random() ফাংশন ব্যবহার করে র্যান্ডম ইউনিক ডেটা (যেমন ইমেইল আইডি) জেনারেট করে ডকুমেন্ট আপডেট করা যায়। এটি টেস্ট ডেটা তৈরির জন্য উপযোগী।
উদাহরণ: কালেকশন ও ডেটা তৈরি (EmailId: null)
> db.demo561.insertOne({EmailId: null});
{ "acknowledged" : true, "insertedId" : ObjectId("5e8f490454b4472ed3e8e86c") }
> db.demo561.insertOne({EmailId: null});
{ "acknowledged" : true, "insertedId" : ObjectId("5e8f490654b4472ed3e8e86d") }
> db.demo561.insertOne({EmailId: null});
{ "acknowledged" : true, "insertedId" : ObjectId("5e8f490a54b4472ed3e8e86e") }
সব ডকুমেন্ট দেখানো
> db.demo561.find();
আউটপুট:
{ "_id" : ObjectId("5e8f490454b4472ed3e8e86c"), "EmailId" : null }
{ "_id" : ObjectId("5e8f490654b4472ed3e8e86d"), "EmailId" : null }
{ "_id" : ObjectId("5e8f490a54b4472ed3e8e86e"), "EmailId" : null }
র্যান্ডম ইমেইল জেনারেট করে আপডেট করা
> db.demo561.find().forEach(function(doc) {
db.demo561.update(
{ _id: doc._id },
{ $set: {
EmailId: 'John' + Math.random() * 100000000000000000 + '@' + Math.random() * 100000000000000000 + '.com'
} }
});
কোড ব্যাখ্যা
db.demo561.find().forEach(...)— প্রতিটি ডকুমেন্টে লুপ চালায়।Math.random() * 100000000000000000— ০ থেকে ১০17-এর মধ্যে র্যান্ডম সংখ্যা জেনারেট করে।- স্ট্রিং কনкатেনেশন:
'John' + random + '@' + random + '.com'। update({_id: doc._id}, {$set: {...}})— প্রতিটি ডকুমেন্ট আপডেট করে।
আউটপুট (উদাহরণ)
{ "_id" : ObjectId("5e8f490454b4472ed3e8e86c"), "EmailId" : "John23607829153155868@62688631475897960.com" }
{ "_id" : ObjectId("5e8f490654b4472ed3e8e86d"), "EmailId" : "John63351292234094710@79460595429439740.com" }
{ "_id" : ObjectId("5e8f490a54b4472ed3e8e86e"), "EmailId" : "John71315584787457890@99884571221675000.com" }
সতর্কতা ও উন্নতি
- Math.random() ইউনিক নয়: ডুপ্লিকেট হতে পারে (যদিও বড় রেঞ্জে সম্ভাবনা কম)। প্রোডাকশনে UUID বা ObjectId ব্যবহার করুন।
- বাল্ক আপডেট: লুপের বদলে
bulkWrite()ব্যবহার করুন পারফরম্যান্সের জন্য। - টাইপস্ট্রিপ্ট/নোড.জেএস: অ্যাপ্লিকেশন কোডে Faker.js বা অন্য লাইব্রেরি ব্যবহার করুন।
Math.random()ক্রিপ্টোগ্রাফিক্যালি সিকিউর নয়।
মূল পয়েন্টসমূহ
- MongoDB শেলে JavaScript ফাংশন (Math.random, Date.now, ইত্যাদি) ব্যবহার করা যায়।
forEach+updateপ্যাটার্ন ব্যাকফিল (backfill) বা ডেটা মাইগ্রেশনের জন্য কাজে লাগে।- ইউনিক কনস্ট্রেইন্ট থাকলে ডুপ্লিকেট এরর হ্যান্ডল করুন।