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

MongoDB-তে নেস্টেড অ্যারেতে ভ্যালু ইনক্রিমেন্ট কীভাবে করবেন?

পজিশনাল $ অপারেটর ব্যবহার

নেস্টেড অ্যারে-র নির্দিষ্ট এলিমেন্ট আপডেট করার জন্য কুয়েরিতে ম্যাচ করা এলিমেন্টের পজিশন রেফার করতে $ (পজিশনাল অপারেটর) ব্যবহার করা হয়।

উদাহরণ: নেস্টেড অ্যারে সহ ডকুমেন্ট

> db.incrementInNestedArrayDemo.insertOne({
    "StudentId": 100,
    "ProjectDetails": [
        { "ProjectId": 567778888, "TeamSize": 4 },
        { "ProjectId": 67888999, "TeamSize": 2 }
    ]
});
{ "acknowledged" : true, "insertedId" : ObjectId("5c9a6b7b15e86fd1496b38aa") }

ProjectId: 67888999 এর TeamSize ১ বাড়ানো

> db.incrementInNestedArrayDemo.update(
    { "StudentId": 100, "ProjectDetails.ProjectId": 67888999 },
    { $inc: { "ProjectDetails.$.TeamSize": 1 } }
);
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

ফাইনাল ডেটা

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

আউটপুট:

{ "ProjectId": 567778888, "TeamSize": 4 }
{ "ProjectId": 67888999, "TeamSize": 3 }  // 2 -> 3 হয়েছে

ব্যাখ্যা

  • কুয়েরি: ProjectDetails.ProjectId: 67888999 - অ্যারেতে এই ফিল্ড ম্যাচ করালো
  • আপডেট: ProjectDetails.$.TeamSize - $ ম্যাচ করা এলিমেন্টকে রেফার করে
  • $inc - ইনক্রিমেন্ট করে

সীমাবদ্ধতা: শুধু প্রথম ম্যাচ করা এলিমেন্ট আপডেট হয়। একাধিক ম্যাচ হলে সব আপডেট করতে arrayFilters (MongoDB 3.6+) ব্যবহার করুন।

  1. MongoDB-তে অ্যারے के ভেতরের এলিমেন্ট আপডেট

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

  3. MongoDB-এ নেস্টেড অ্যারে সর্ট করা

  4. MongoDB-তে অ্যারের ভ্যালু অনুযায়ী কালেকশন সর্ট করা (aggregate + $unwind + $sort)