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

MongoDB-এ নেস্টেড ডকুমেন্ট আপডেট করা ($set ব্যবহার করে)


MongoDB-এ গভীর নেস্টেড (Deeply Nested) ডকুমেন্ট আপডেট করা

MongoDB-এ নেস্টেড ডকুমেন্ট বা অ্যারে-র ভেতরের অবজেক্ট আপডেট করার জন্য $set অপারেটর দিয়ে ডট (.) নোটেশন বা পজিশনাল অপারেটর ব্যবহার করা হয়।

১. কালেকশন ও নেস্টেড ডকুমেন্ট তৈরি

> db.demo315.insertOne({
  _id : 101,
  details: [
    { Name: 'Chris', subjects: [{ id: 1001, SubjectName: "MySQL" }] }
  ]
});
{ "acknowledged" : true, "insertedId" : 101 }

২. আপডেটের আগে ডকুমেন্ট

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

আউটপুট:

{
  "_id" : 101,
  "details" : [
    {
      "Name" : "Chris",
      "subjects" : [
        { "id" : 1001, "SubjectName" : "MySQL" }
      ]
    }
  ]
}

৩. নেস্টেড ডকুমেন্ট আপডেট করা (subjects অ্যারে-র ২য় এলিমেন্টে id: 1004 যোগ)

> db.demo315.update({ _id: 101 }, { '$set': { "details.0.subjects.1.id" : 1004 } })
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

পাথ ব্যাখ্যা: details.0.subjects.1.id

  • details.0 - details অ্যারে-র প্রথম (০ ইনডেক্স) এলিমেন্ট।
  • subjects.1 - subjects অ্যারে-র দ্বিতীয় (১ ইনডেক্স) এলিমেন্ট (নতুন যোগ হবে)।
  • id - সেটি ফিল্ড।

নোট: যেহেতু subjects অ্যারে-তে শুধু ১টি এলিমেন্ট ছিল (ইনডেক্স ০), ইনডেক্স ১-এ নতুন এলিমেন্ট যোগ হয়ে গেছে।

৪. আপডেটের পর ডকুমেন্ট

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

আউটপুট:

{
  "_id" : 101,
  "details" : [
    {
      "Name" : "Chris",
      "subjects" : [
        { "id" : 1001, "SubjectName" : "MySQL" },
        { "id" : 1004 }
      ]
    }
  ]
}

এখন subjects অ্যারে-তে দুটি এলিমেন্ট আছে। দ্বিতীয় এলিমেন্টে শুধু id: 1004 আছে, SubjectName নেই কারণ সেটি সেট করা হয়নি।


  1. MongoDB-তে নেস্টেড ডকুমেন্ট খোঁজা (Dot Notation)

  2. MongoDB-তে কাস্টম ভেরিয়েবল ব্যবহার করে ডকুমেন্ট আপডেট করা

  3. MongoDB-তে নেস্টেড ডকুমেন্ট আপডেট করা (ডট নোটেশন + পজিশনাল $)

  4. MongoDB-তে ডট নোটেশন ব্যবহার করে নেস্টেড ডকুমেন্ট আপডেট করা