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

MongoDB-এ ডকুমেন্টে নতুন অ্যারে এলিমেন্ট যোগ করা

MongoDB-এ অ্যারেতে নেস্টেড ডকুমেন্ট খুঁজে বের করে সেটার মধ্যে নতুন ফিল্ড যোগ করতে (অথবা নতুন এলিমেন্ট যোগ করতে) পজিশনাল $ অপারেটর এবং $set বা $push ব্যবহার করা হয়।

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

> db.demo222.insertOne({"details":[{"StudentName":"Chris","StudentMarks":78},{"StudentName":"David","StudentMarks":89}]});
{ "acknowledged" : true, "insertedId" : ObjectId("5e3ee31703d395bdc213472f") }

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

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

আউটপুট:

{ "_id" : ObjectId("5e3ee31703d395bdc213472f"), "details" : [ { "StudentName" : "Chris", "StudentMarks" : 78 }, { "StudentName" : "David", "StudentMarks" : 89 } ] }

নতুন ফিল্ড যোগ করার কোয়ারী (নেস্টেড এলিমেন্টে)

details.StudentName: "Chris" মিলে যাওয়া এলিমেন্টে SubjectName: "MongoDB" ফিল্ড যোগ করা হয়েছে:

> db.demo222.update({"details.StudentName" : "Chris"}, {$set: {"details.$.SubjectName": "MongoDB"}});
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

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

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

আউটপুট (Chris-এ SubjectName যোগ হয়েছে):

{ "_id" : ObjectId("5e3ee31703d395bdc213472f"), "details" : [ { "StudentName" : "Chris", "StudentMarks" : 78, "SubjectName" : "MongoDB" }, { "StudentName" : "David", "StudentMarks" : 89 } ] }

ব্যাখ্যা:

  • details.StudentName: "Chris" - কোয়ারী: details অ্যারেতে StudentName "Chris" খুঁজে
  • details.$.SubjectName - পজিশনাল $ মিলে যাওয়া এলিমেন্টকে পয়েন্ট করে
  • $set - নতুন ফিল্ড যোগ করে (যদি থাকে তবে আপডেট)

নতুন এলিমেন্ট যোগ করতে (পুশ):

db.demo222.update(
  {_id: ObjectId("5e3ee31703d395bdc213472f")},
  {$push: {details: {StudentName: "Bob", StudentMarks: 95}}}
)

আধুনিক পদ্ধতি (arrayFilters - MongoDB 3.6+):

db.demo222.updateOne(
  { "details.StudentName": "Chris" },
  { $set: { "details.$[elem].SubjectName": "MongoDB" } },
  { arrayFilters: [ { "elem.StudentName": "Chris" } ] }
)

arrayFilters একাধিক মিলে যাওয়া এলিমেন্ট হ্যান্ডেল করতে বেশি কন্ট্রোল দেয়।

সতর্কতা: টাইটেলে "নতুন অ্যারে এলিমেন্ট" বলা হয়েছে কিন্তু উদাহরণে নেস্টেড এলিমেন্টে নতুন ফিল্ড যোগ করা হয়েছে। পুরো নতুন এলিমেন্ট যোগ করতে $push ব্যবহার করুন।

  1. MongoDB কোয়ারী: আইডি যদি ডকুমেন্ট ফিল্ড অ্যারে মানের সমান হয় তবে বাদ দেওয়া

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

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

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