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

MongoDB-এ শর্তসাপেক্ষ অ্যারে উপাদান ইনসার্ট করা ($push ও পজিশনাল $)

MongoDB-এ পজিশনাল $ অপারেটর দিয়ে শর্তসাপেক্ষ অ্যারে আপডেট

যদি অ্যারেতে অবজেক্ট থাকে এবং নির্দিষ্ট শর্তে মিলা উপাদানের ভেতরের অ্যারেতে নতুন মান পুশ করতে হয়, তবে কোয়ারিতে পজিশনাল $ অপারেটর ব্যবহার করা হয়। এটি মিলা উপাদানের ইন্ডেক্সকে রিপ্রেজেন্ট করে।

উদাহরণ: ডেটা ইনসার্ট

> db.demo11.insertOne({"ListOfStudent":[{"StudentName":"Chris","ListOfScore":[76,67,54,89]}]});
{ "acknowledged" : true, "insertedId" : ObjectId("5e0f6e34d7df943a7cec4fa1") }

প্রদর্শন

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

আউটপুট:

{ "_id" : ObjectId("5e0f6e34d7df943a7cec4fa1"), "ListOfStudent" : [ { "StudentName" : "Chris", "ListOfScore" : [ 76, 67, 54, 89 ] } ] }

শর্তসাপেক্ষ পুশ (StudentName="Chris" হলে ListOfScore-এ 98 যোগ)

> db.demo11.update( {"ListOfStudent.StudentName":"Chris"}, {$push:{"ListOfStudent.$.ListOfScore":98}} );
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

আপডেট পর পরিদর্শন

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

আউটপুট:

{ "_id" : ObjectId("5e0f6e34d7df943a7cec4fa1"), "ListOfStudent" : [ { "StudentName" : "Chris", "ListOfScore" : [ 76, 67, 54, 89, 98 ] } ] }

ব্যাখ্যা

  • {"ListOfStudent.StudentName":"Chris"} — কোয়ারি: ListOfStudent অ্যারেতে যেই উপাদানে StudentName="Chris" আছে।
  • {$push:{"ListOfStudent.$.ListOfScore":98}} — $ হলো পজিশনাল অপারেটর, কোয়ারিতে মিলা উপাদানের লোকেশন (ইন্ডেক্স ০)। সেটার ListOfScore অ্যারেতে ৯৮ পুশ।
  • শুধু মিলা উপাদান আপডেট হয়, অন্যগুলো অপরিবর্তিত।

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

  1. MongoDB-তে $slice ব্যবহার করে অ্যারে থেকে একমাত্র এলিমেন্ট বের করা

  2. MongoDB-তে অ্যাগ্রিগেশন দিয়ে অ্যারে এলিমেন্টের গড় (Average) বের করা ($avg)

  3. MongoDB-এ এমবেডেড ডকুমেন্টের অ্যারে ফিল্টার করা (৩ লেভেল)

  4. MongoDB-এ শর্তসাপেক্ষ কনক্যাটেনেশন (Concatenate with Condition)