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

MongoDB-এ অ্যারে অবজেক্টের নির্দিষ্ট ইনডেক্স আপডেট করা


অ্যারে নির্দিষ্ট ইনডেক্স আপডেট: ডট নোটেশন + পজিশনাল $

MongoDB-এ একটি অ্যারে অবজেক্টের নির্দিষ্ট ইনডেক্স (পজিশন) আপডেট করতে ডট নোটেশন দিয়ে ইনডেক্স স্পেসিফাই করে $set ব্যবহার করা হয়।

নমুনা ডেটা তৈরি

> db.demo489.insertOne({
    details: [
        { id: 101, "Info1": { "StudentName": "Chris" }, "Info2": { "TeacherName": "David" } },
        { id: 102, "Info1": { "StudentName": "Carol" }, "Info2": { "TeacherName": "Mike" } }
    ]
})

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

> db.demo489.find()

আউটপুট:

{ "_id": ObjectId("..."), "details": [{ "id": 101, "Info1": { "StudentName": "Chris" }, "Info2": { "TeacherName": "David" } }, { "id": 102, "Info1": { "StudentName": "Carol" }, "Info2": { "TeacherName": "Mike" } }] }

দ্বিতীয় এলিমেন্ট (ইনডেক্স ১ / id:102) আপডেট করা

> db.demo489.update(
    { "details.id": 102 },
    { $set: {
        "details.$.Info1.StudentName": "Robert",
        "details.$.Info2.TeacherName": "John",
        "details.$.CountryName": "US"
    }}
)

ফলাফল:

WriteResult({ "nMatched": 1, "nUpserted": 0, "nModified": 1 })

আপডেট後の ডকুমেন্ট

> db.demo489.find().pretty()

আউটপুট:

{ "_id": ObjectId("..."), "details": [{ "id": 101, "Info1": { "StudentName": "Chris" }, "Info2": { "TeacherName": "David" } }, { "id": 102, "Info1": { "StudentName": "Robert" }, "Info2": { "TeacherName": "John" }, "CountryName": "US" }] }

ব্যাখ্যা

  • { "details.id": 102 }: অ্যারে details এ id: 102 থাকা এলিমেন্ট খুঁজে
  • details.$.Info1.StudentName: পজিশনাল $ ম্যাচ করা এলিমেন্টের (দ্বিতীয়) পজিশন রিপ্রেজেন্ট করে
  • একসাথে একাধিক নেস্টেড ফিল্ড আপডেট করা হয়েছে (+ নতুন ফিল্ড CountryName যোগ)
  • সতর্কতা: শুধু প্রথম ম্যাচ আপডেট হয়। একাধিক ম্যাচ হলে সব আপডেট করতে $[] (MongoDB 3.6+) ব্যবহার করুন
  • আধুনিক সিনট্যাক্স: updateOne() / updateMany()
  1. MongoDB-এ $all অপারেটর ব্যবহার করে অ্যারে মিলানো

  2. MongoDB-তে নির্দিষ্ট কী দিয়ে অ্যারেতে অবজেক্ট আপডেট করা

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

  4. MongoDB-তে সাবডকুমেন্টের অ্যারে কুয়েরি