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

MongoDB-তে কন্ডিশনাল আপসার্ট/আপডেট ($max) কীভাবে করবেন?

$max অপারেটর ব্যবহার

$max অপারেটর ফিল্ডটি আপডেট করে শুধু তখন যখন নতুন মান বর্তমান মানের চেয়ে বড় হয়। এটি কন্ডিশনাল আপডেটের জন্য আদর্শ।

উদাহরণ: ডকুমেন্ট তৈরি (BiggestScore ট্র্যাক)

> db.conditionalUpdatesDemo.insertOne({"_id":100,"StudentFirstScore":89,"StudentSecondScore":78,"BiggestScore":89});
{ "acknowledged" : true, "insertedId" : 100 }
> db.conditionalUpdatesDemo.insertOne({"_id":101,"StudentFirstScore":305,"StudentSecondScore":560,"BiggestScore":1050});
{ "acknowledged" : true, "insertedId" : 101 }
> db.conditionalUpdatesDemo.insertOne({"_id":103,"StudentFirstScore":560,"StudentSecondScore":789,"BiggestScore":880});
{ "acknowledged" : true, "insertedId" : 103 }

কন্ডিশনাল আপডেট: _id 100-এ BiggestScore 150 দিয়ে আপডেট (১৫০ > ৮৯ হলে আপডেট হবে)

> db.conditionalUpdatesDemo.update(
    { _id: 100 },
    { $max: { "BiggestScore": 150 } }
);
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

ফাইনাল ডেটা

> db.conditionalUpdatesDemo.find().pretty();

আউটপুট:

{ "_id": 100, "BiggestScore": 150 }   // 89 -> 150 আপডেট হয়েছে
{ "_id": 101, "BiggestScore": 1050 }  // 150 < 1050, আপডেট হবে না
{ "_id": 103, "BiggestScore": 880 }   // 150 < 880, আপডেট হবে না

সম্পর্কিত অপারেটর

  • $min - নতুন মান ছোট হলে আপডেট
  • $setOnInsert - শুধু ইনসার্টের সময় সেট (upsert সাথে)

ব্যবহারিক於: হাই স্কোর, লাস্ট লগইন টাইম, ম্যাক্সিমাম ভ্যালু ট্র্যাকিং-এ $max/$min খুব কাজে দেয়।

  1. MongoDB-এ বাল্ক ইন্সার্ট (initializeUnorderedBulkOp) করা

  2. MongoDB-এ বাল্ক (Bulk) অপারেশন দিয়ে অ্যারে এলিমেন্ট একাধিক আপডেট করা

  3. MongoDB-এ একাধিক আটোমিক আপডেট (update() with $set, multi: true)

  4. MySQL-এ শর্তসাপেক্ষ GROUP BY ব্যবহার করে সর্বোচ্চ মান বের করা