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

MongoDB-এ অ্যারে অবজেক্টের এলিমেন্টের প্রপার্টি মান ইনক্রিমেন্ট করা

MongoDB-এ অ্যারেতে নেস্টেড অবজেক্টের নির্দিষ্ট প্রপার্টির মান বাড়াতে (increment) update() মেথডে পজিশনাল $ অপারেটর এবং $inc ব্যবহার করা হয়।

কলেকশন এবং ডকুমেন্ট তৈরি

> db.demo97.insertOne({
...   "Details": [
...     { "Name": "Chris", "Marks": 45 },
...     { "Name": "Bob", "Marks": 88 }
...   ]
... });
{ "acknowledged" : true, "insertedId" : ObjectId("5e2d6d24b8903cdd865577af") }

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

>> db.demo97.find();

আউটপুট:

{ "_id" : ObjectId("5e2d6d24b8903cdd865577af"), "Details" : [ { "Name" : "Chris", "Marks" : 45 }, { "Name" : "Bob", "Marks" : 88 } ] }

প্রপার্টি মান ইনক্রিমেন্ট করার কোয়ারী

Details.Name: "Bob" মিলে যাওয়া এলিমেন্টের Marks ১০ বাড়ানো হয়েছে:

> db.demo97.update(
...   { "Details.Name": "Bob" },
...   { $inc: { "Details.$.Marks" : 10 } }
... );
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

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

> db.demo97.find();

আউটপুট (Bob-এর Marks ৮৮ থেকে ৯৮ হয়েছে):

{ "_id" : ObjectId("5e2d6d24b8903cdd865577af"), "Details" : [ { "Name" : "Chris", "Marks" : 45 }, { "Name" : "Bob", "Marks" : 98 } ] }

গুরুত্বপূর্ণ পয়েন্টসমূহ:

  • Details.$.Marks - এখানে $ হলো পজিশনাল অপারেটর, যা কোয়ারীতে মিলে যাওয়া প্রথম অ্যারে এলিমেন্টকে নির্দেশ করে
  • $inc - নির্দিষ্ট পরিমাণ বাড়াতে বা কমানোতে ব্যবহার করা হয় (নেগেটিভ মান দিলে কমে যাবে)
  • শুধু প্রথম মিলে যাওয়া এলিমেন্ট আপডেট হয়; সব এলিমেন্ট আপডেট করতে হলে arrayFilters ব্যবহার করুন (MongoDB 3.6+)

আধুনিক পদ্ধতি (arrayFilters সহ):

db.demo97.updateOne(
  { "Details.Name": "Bob" },
  { $inc: { "Details.$[elem].Marks": 10 } },
  { arrayFilters: [ { "elem.Name": "Bob" } ] }
)
  1. MongoDB-এ সাব-প্রপার্টি হিসেবে অ্যারে এলিমেন্ট মুছে ফেলা ($pull)

  2. MongoDB-তে নির্দিষ্ট কী দিয়ে অ্যারেতে অবজেক্ট আপডেট করা

  3. MongoDB-এ অ্যারে অবজেক্টের নির্দিষ্ট এলিমেন্টের মান ইনক্রিমেন্ট করা

  4. MongoDB-এ অ্যারেতে নির্দিষ্ট মান রিপ্লেস করা (Positional $ ও $set)