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

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

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

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

addAFieldDemo কালেকশনে একটি ডকুমেন্ট ইনসার্ট করি যাতে ClientOtherDetails নামে একটি অ্যারে থাকে, যার ভিতরে এমবেডেড ডকুমেন্ট আছে।

> db.addAFieldDemo.insertOne(
  {
    "ClientName" : "Larry",
    "ClientCountryName" : "US",
    "ClientOtherDetails" : [
      {
        "ClientProjectName" : "Online Banking System"
      }
    ]
  }
);
{ "acknowledged" : true, "insertedId" : ObjectId("5cd44bdc2cba06f46efe9ee8") }

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

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

আউটপুট:

{
  "_id" : ObjectId("5cd44bdc2cba06f46efe9ee8"),
  "ClientName" : "Larry",
  "ClientCountryName" : "US",
  "ClientOtherDetails" : [
    {
      "ClientProjectName" : "Online Banking System"
    }
  ]
}

অ্যারের ভেতরের ডকুমেন্টে ফিল্ড যোগ করা

$elemMatch দিয়ে সঠিক এলিমেন্ট খুঁজে $ পজিশনাল অপারেটর দিয়ে isMarried ফিল্ড যোগ করি:

> db.addAFieldDemo.update(
  { ClientOtherDetails: { $elemMatch: { "ClientProjectName" : "Online Banking System" } } },
  { $set : { 'ClientOtherDetails.$.isMarried' : true } },
  true
);
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

ফলাফল দেখানো

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

আউটপুট:

{
  "_id" : ObjectId("5cd44bdc2cba06f46efe9ee8"),
  "ClientName" : "Larry",
  "ClientCountryName" : "US",
  "ClientOtherDetails" : [
    {
      "ClientProjectName" : "Online Banking System",
      "isMarried" : true
    }
  ]
}

মনে রাখবেন: $ অপারেটর কোয়েরি মেলানো প্রথম এলিমেন্টকে ইঙ্গিত করে। একাধিক এলিমেন্ট আপডেট করতে arrayFilters ব্যবহার করুন (MongoDB 3.6+)。

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

  2. MongoDB-এ পপুলেটেড ফিল্ডে অ্যারে স্লাইস করা

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

  4. MongoDB-এ বিদ্যমান ডকুমেন্টে নির্দিষ্ট ডেটা টাইপের ফিল্ড যোগ করা (লিস্ট, অবজেক্ট)