$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 খুব কাজে দেয়।