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

MongoDB-এ $addToSet ব্যবহার করে ডিপ নেস্টেড অ্যারে অবজেক্ট যোগ করা

MongoDB-এ গভীর নেস্টেড অ্যারেতে $addToSet ব্যবহার

$addToSet অপারেটর অ্যারেতে মান যোগ করে যদি সেটি ইতিমধ্যে না থাকে। গভীর নেস্টেড স্ট্রাকচারে (অ্যারে ভিতরে অবজেক্ট, তার ভিতরেও অ্যারে) এটি পজিশনাল অপারেটর ($) দিয়ে ব্যবহার করা হয়।

উদাহরণ: নেস্টেড ডিটেইলস সহ ডকুমেন্ট তৈরি

> db.demo380.insertOne({ "details" : [ { "Name" : "Chris", "details1" : [ ] }, { "Name" : "David", "details1" : [ ] } ] });
{ "acknowledged" : true, "insertedId" : ObjectId("5e5b56e32ae06a1609a00b11") }

আপডেট করার আগে

> db.demo380.find().pretty();
{ "_id" : ObjectId("5e5b56e32ae06a1609a00b11"), "details" : [ { "Name" : "Chris", "details1" : [ ] }, { "Name" : "David", "details1" : [ ] } ] }

Name="David" হলে details1 অ্যারেতে অবজেক্ট যোগ করা

> db.demo380.update(
    { "details.Name": "David" },
    { $addToSet: { "details.$.details1": { 'SubjectName': "MongoDB", 'TeacherName':"Bob" } } },
    false, true
);
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

আপডেটের পর

> db.demo380.find().pretty();
{ "_id" : ObjectId("5e5b56e32ae06a1609a00b11"), "details" : [ { "Name" : "Chris", "details1" : [ ] }, { "Name" : "David", "details1" : [ { "SubjectName" : "MongoDB", "TeacherName" : "Bob" } ] } ] }

ব্যাখ্যা

  • { "details.Name": "David" }: কুয়েরি - details অ্যারেতে Name="David" থাকা এলিমেন্ট খুঁজে।
  • details.$.details1: $ হলো ম্যাচ করা এলিমেন্ট (David), তার details1 অ্যারে টার্গেট।
  • $addToSet: অবজেক্টটি যদি ইতিমধ্যে থাকে তবে যোগ করবে না (ডুপ্লিকেট প্রতিরোধ)।
  • false, true: আপডেট অপশনস - upsert: false, multi: true (লিগ্যাসি সিনট্যাক্স)।

আধুনিক সিনট্যাক্স (MongoDB 3.6+)

db.demo380.updateOne(
  { "details.Name": "David" },
  { $addToSet: { "details.$[elem].details1": { SubjectName: "MongoDB", TeacherName: "Bob" } } },
  { arrayFilters: [ { "elem.Name": "David" } ] }
)

লाभ: arrayFilters ব্যবহার করা আরও পঠনীয় এবং নেস্টেড লেভেলে কাজ করে।

  1. MongoDB-এ ডট নোটেশন দিয়ে নেস্টেড অ্যারেতে অবজেক্ট অ্যাক্সেস করা

  2. MongoDB-এ $lookup ব্যবহার করে ObjectId-এর অ্যারে সাথে জয়েন করা

  3. MongoDB-এ নেস্টেড অ্যারে অ্যাগ্রিগেট করার পদ্ধতি

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