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

MongoDB-ে বড় কালেকশনে প্রতিটি ডকুমেন্টে নতুন প্রপার্টি যোগ করা


forEach() এবং update() ব্যবহার করে বড় কালেকশনে ফিল্ড যোগ

বড় কালেকশনের প্রতিটি ডকুমেন্টে নতুন একটি ফিল্ড যোগ করতে find().forEach() লুপের ভেতরে update() কল করা হয়। এটি মেমরি-ইফিশিয়েন্ট এবং ব্যাচ-ওয়াইজ প্রসেস করে।

নমুনা ডেটা

> db.addingNewPropertyDemo.insertOne({"StudentName":"John","StudentAge":23,"CountryName":"US"});
> db.addingNewPropertyDemo.insertOne({"StudentName":"David","StudentAge":21,"CountryName":"AUS"});
> db.addingNewPropertyDemo.insertOne({"StudentName":"Bob","StudentAge":21,"CountryName":"UK"});

নতুন প্রপার্টি যোগ করার কোড

> db.addingNewPropertyDemo.find().forEach(function(data) {
  db.addingNewPropertyDemo.update(
    { _id: data._id },
    { $set: { StudentNameInUpperCase: data.StudentName.toUpperCase() } }
  );
});

ফলাফল যাচাই

> db.addingNewPropertyDemo.find().pretty();
{
  "_id" : ObjectId("5ca1e61866324ffac2a7dc56"),
  "StudentName" : "John", "StudentAge" : 23, "CountryName" : "US",
  "StudentNameInUpperCase" : "JOHN"
}
{
  "_id" : ObjectId("5ca1e62366324ffac2a7dc57"),
  "StudentName" : "David", "StudentAge" : 21, "CountryName" : "AUS",
  "StudentNameInUpperCase" : "DAVID"
}
{
  "_id" : ObjectId("5ca1e62d66324ffac2a7dc58"),
  "StudentName" : "Bob", "StudentAge" : 21, "CountryName" : "UK",
  "StudentNameInUpperCase" : "BOB"
}

বিকল্প (MongoDB 4.2+): updateMany সাথে Aggregation Pipeline ব্যবহার করে এক কোয়েরিতে:

db.collection.updateMany(
  {},
  [{ $set: { StudentNameInUpperCase: { $toUpper: "$StudentName" } } }]
);

সতর্কতা: forEach ধীর হতে পারে বড় ডেটাসেটে। Bulk Write Operations (bulkWrite) বা Aggregation Pipeline Update ব্যবহার করুন।


  1. MongoDB-এ বড় কালেকশনে স্লো সার্চ ঠিক করতে ইন্ডেক্স তৈরি করা

  2. MongoDB-এ কালেকশন থেকে টপমোস্ট (প্রথম) ডকুমেন্ট বের করা

  3. MongoDB-তে সব ডকুমেন্টে নতুন ফিল্ড যোগ করা ($addFields)

  4. MongoDB-এ ফর্মুলা দিয়ে কালেকশনের সব ডকুমেন্টের ফিল্ড আপডেট করা