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

MongoDB-এ নির্দিষ্ট ডকুমেন্টের ফিল্ড ইনক্রিমেন্ট করা ($inc অপারেটর)

MongoDB-এ একটি ডকুমেন্টের নির্দিষ্ট न्यूमেরিক ফিল্ডের মান বাড়ানো বা কমানো (ইনক্রিমেন্ট/ডিক্রিমেন্ট) করার জন্য $inc অপারেটর ব্যবহার করা হয়। এটি আটোমিক (atomic) অপারেশন, তাই কনকারেন্সি (concurrency) সুরক্ষিত থাকে।

উদাহরণ: কালেকশন ও ডেটা তৈরি

> db.demo698.insertOne({ Score: 78 });
{ "acknowledged" : true, "insertedId" : ObjectId("5ea6d8a4551299a9f98c9398") }
> db.demo698.insertOne({ Score: 56 });
{ "acknowledged" : true, "insertedId" : ObjectId("5ea6d8a7551299a9f98c9399") }
> db.demo698.insertOne({ Score: 65 });
{ "acknowledged" : true, "insertedId" : ObjectId("5ea6d8aa551299a9f98c939a") }
> db.demo698.insertOne({ Score: 88 });
{ "acknowledged" : true, "insertedId" : ObjectId("5ea6d8b0551299a9f98c939b") }

সব ডকুমেন্ট দেখানো

> db.demo698.find();

আউটপুট:

{ "_id" : ObjectId("5ea6d8a4551299a9f98c9398"), "Score" : 78 }
{ "_id" : ObjectId("5ea6d8a7551299a9f98c9399"), "Score" : 56 }
{ "_id" : ObjectId("5ea6d8aa551299a9f98c939a"), "Score" : 65 }
{ "_id" : ObjectId("5ea6d8b0551299a9f98c939b"), "Score" : 88 }

নির্দিষ্ট ডকুমেন্টের Score ১২ বাড়ানো (_id দিয়ে)

> db.demo698.update(
    { _id: ObjectId("5ea6d8b0551299a9f98c939b") },
    { $inc: { Score: 12 } }
);
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

আপডেটের পর ডকুমেন্ট দেখানো

> db.demo698.find();

আউটপুট:

{ "_id" : ObjectId("5ea6d8a4551299a9f98c9398"), "Score" : 78 }
{ "_id" : ObjectId("5ea6d8a7551299a9f98c9399"), "Score" : 56 }
{ "_id" : ObjectId("5ea6d8aa551299a9f98c939a"), "Score" : 65 }
{ "_id" : ObjectId("5ea6d8b0551299a9f98c939b"), "Score" : 100 }

Score ৮৮ থেকে ১০০ হয়েছে (৮৮ + ১২ = ১০০)۔

মূল পয়েন্টসমূহ

  • $inc — ফিল্ডের মান ইনক্রিমেন্ট/ডিক্রিমেন্ট করে (নেগেটিভ মান দিলে কমবে)।
  • আটোমিক (Atomic): একই ডকুমেন্টে একসাথে একাধিক রিকোয়েস্ট আসলে race condition হয় না।
  • ফিল্ডটি যদি সংখ্যা (number) না হয়, তবে এরর দেবে।
  • ফিল্ডটি অনুপস্থিত থাকলে $inc সেটি তৈরি করে দেবে (০ ধরে) এবং ইনক্রিমেন্ট করবে।
  • আধুনিক সিনট্যাক্স: db.demo698.updateOne({ _id: ... }, { $inc: { Score: 12 } })।
  • $inc কাউন্টার, স্কোর, ইনভেন্টরি কোয়ান্টিটি আপডেটের জন্য আদর্শ।
  1. MongoDB-এ findOneAndUpdate() ব্যবহার করে একক ডকুমেন্ট আপডেট করা

  2. MongoDB-তে নেস্টেড ডকুমেন্ট মান অনুসন্ধান

  3. MongoDB-তে শুধু একটি ডকুমেন্ট আপডেট করা ডেটা মুছে ফেলা ছাড়া

  4. MongoDB-তে findOne() ব্যবহার করে একক ডকুমেন্ট রিট্রিভ করা