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

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

MongoDB-এ নেস্টেড অ্যারেতে নির্দিষ্ট ইনডেক্স বা পজিশনের ফিল্ড আপডেট করতে পজিশনাল $ অপারেটর এবং ডট নোটেশন ব্যবহার করা হয়। অ্যারে ইনডেক্স ০ থেকে শুরু হয়।

সিনট্যাক্স

db.collection.update(
  { "arrayField.nestedField": "matchValue" },
  { $set: { "arrayField.$.nestedArray.index": "newValue" } }
);

নমুনা কালেকশন তৈরি

> db.updateExactField.insertOne({
  "ActorId": 1,
  "ActorDetails": [
    { "ActorName": "Johnny Depp", "MovieList": ["The Tourist", "Public Enemy"] },
    { "ActorName": "Chris Evans", "MovieList": ["Captain America", "Avengers"] }
  ]
});
{ "acknowledged": true, "insertedId": ObjectId("5c6d7f63f2db199c1278e7f1") }

ডকুমেন্ট প্রদর্শন

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

আউটপুট:

{
  "_id": ObjectId("5c6d7f63f2db199c1278e7f1"),
  "ActorId": 1,
  "ActorDetails": [
    { "ActorName": "Johnny Depp", "MovieList": [ "The Tourist", "Public Enemy" ] },
    { "ActorName": "Chris Evans", "MovieList": [ "Captain America", "Avengers" ] }
  ]
}

কেস ১: তৃতীয় পজিশন (ইনডেক্স ২) আপডেট

Chris Evans-এর MovieList অ্যারেতে ইনডেক্স ২-এ "Avengers:Infinity War" যোগ করা:

> db.updateExactField.update(
  { "ActorDetails.ActorName": "Chris Evans" },
  { $set: { "ActorDetails.$.MovieList.2": "Avengers:Infinity War" } }
);
WriteResult({ "nMatched": 1, "nUpserted": 0, "nModified": 1 })

ফলাফল যাচাই

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

আউটপুট:

{
  "_id": ObjectId("5c6d7f63f2db199c1278e7f1"),
  "ActorId": 1,
  "ActorDetails": [
    { "ActorName": "Johnny Depp", "MovieList": [ "The Tourist", "Public Enemy" ] },
    { "ActorName": "Chris Evans", "MovieList": [ "Captain America", "Avengers", "Avengers:Infinity War" ] }
  ]
}

কেস ২: দ্বিতীয় পজিশন (ইনডেক্স ১) আপডেট

এখন ইনডেক্স ১-এ "Gifted" সেট করা:

> db.updateExactField.update(
  { "ActorDetails.ActorName": "Chris Evans" },
  { $set: { "ActorDetails.$.MovieList.1": "Gifted" } }
);
WriteResult({ "nMatched": 1, "nUpserted": 0, "nModified": 1 })

ফলাফল যাচাই

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

আউটপুট:

{
  "_id": ObjectId("5c6d7f63f2db199c1278e7f1"),
  "ActorId": 1,
  "ActorDetails": [
    { "ActorName": "Johnny Depp", "MovieList": [ "The Tourist", "Public Enemy" ] },
    { "ActorName": "Chris Evans", "MovieList": [ "Captain America", "Gifted", "Avengers:Infinity War" ] }
  ]
}

ব্যাখ্যা: পজিশনাল $ অপারেটর কোয়েরি মিলে যাওয়া প্রথম অ্যারে এলিমেন্টকে নির্দেশ করে। তারপর ডট নোটেশন দিয়ে নেস্টেড অ্যারেতে নির্দিষ্ট ইনডেক্স আপডেট করা যায়। ইনডেক্স আউট-অফ-বাউন্ড হলে নতুন এলিমেন্ট যোগ হয়।

  1. MongoDB-এ আপডেট অপারেশন দিয়ে ফিল্ডকে অ্যারে-তে রূপান্তর

  2. MongoDB-এ অ্যারেতে সব এলিমেন্ট আপডেট করা ($[] অল পজিশনাল অপারেটর)

  3. MongoDB-তে অ্যারے के ভেতরের এলিমেন্ট আপডেট

  4. MongoDB-এ অ্যারে থেকে এলিমেন্ট মুছে ফেলা ($pull অপারেটর)