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

MongoDB-এ ডকুমেন্টের ভেতরের অ্যারেতে অবজেক্ট আপডেট করা (Positional $ অপারেটর)

MongoDB-এ একটি ডকুমেন্টের ভেতরের অ্যারেতে থাকা নির্দিষ্ট অবজেক্ট আপডেট করার জন্য findOneAndUpdate() মেথড এবং পজিশনাল $ (Positional $) অপারেটর ব্যবহার করা হয়। পজিশনাল $ অপারেটর কুয়েরি ম্যাচ হওয়া অ্যারে এলিমেন্টের ইনডেক্স নির্দেশ করে।

উদাহরণ: কালেকশন ও ডেটা তৈরি

> db.demo553.insertOne({
    id: 101,
    "Name": "John",
    midExamDetails: [
      {"SubjectName": "MySQL", "Marks": 70},
      {"SubjectName": "MongoDB", "Marks": 35}
    ]
});
{ "acknowledged" : true, "insertedId" : ObjectId("5e8e3da19e5f92834d7f05ed") }

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

> db.demo553.find();

আউটপুট:

{ "_id" : ObjectId("5e8e3da19e5f92834d7f05ed"), "id" : 101, "Name" : "John", "midExamDetails" : [
    { "SubjectName" : "MySQL", "Marks" : 70 },
    { "SubjectName" : "MongoDB", "Marks" : 35 }
] }

অ্যারেতে নির্দিষ্ট অবজেক্ট আপডেট করা

SubjectName: "MongoDB" वाले অবজেক্টের Marks ৩৫ থেকে ৯৭ করুন:

> db.demo553.findOneAndUpdate(
    { id: 101, "midExamDetails.SubjectName": "MongoDB" },
    { $set: { 'midExamDetails.$.Marks': 97 } }
);

কোয়েরির ব্যাখ্যা

  • { id: 101, "midExamDetails.SubjectName": "MongoDB" } — ফিল্টার: id: 101 এবং midExamDetails অ্যারেতে SubjectName: "MongoDB" আছে এমন ডকুমেন্ট।
  • { $set: { 'midExamDetails.$.Marks': 97 } } — $ (পজিশনাল অপারেটর) কুয়েরিতে ম্যাচ হওয়া অ্যারে এলিমেন্টের পজিশন নির্দেশ করে (এখানে ইনডেক্স ১)। শুধু সেই এলিমেন্টের Marks আপডেট হয়।

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

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

আউটপুট:

{
    "_id" : ObjectId("5e8e3da19e5f92834d7f05ed"),
    "id" : 101,
    "Name" : "John",
    "midExamDetails" : [
        { "SubjectName" : "MySQL", "Marks" : 70 },
        { "SubjectName" : "MongoDB", "Marks" : 97 }
    ]
}

মূল পয়েন্টসমূহ

  • পজিশনাল $ অপারেটর কুয়েরিতে ম্যাচ হওয়া প্রথম অ্যারে এলিমেন্টকে আপডেট করে।
  • findOneAndUpdate() একক ডকুমেন্ট আপডেট করে এবং আপডেট হওয়ার পূর্বের ডকুমেন্ট রিটার্ন করে (ডিফল্ট)। আপডেট হওয়ার পরের ডকুমেন্ট পেতে { returnNewDocument: true } অপশন দিন।
  • এগরিগেশন পাইপলাইনে $set বা $unset সহ updateMany() বা updateOne()ও ব্যবহার করা যায়।
  • নেস্টেড অ্যারে (array of arrays) এর ক্ষেত্রে arrayFilters অপশন ব্যবহার করা উচিত।
  1. MongoDB-তে অ্যারے के ভেতরের এলিমেন্ট আপডেট

  2. MongoDB-এ updateOne এবং $push ব্যবহার করে নেস্টেড অ্যারে আপডেট করা

  3. MongoDB-এ _id দিয়ে ডকুমেন্ট আপডেট করা

  4. MongoDB-এ অ্যারেতে ডুপ্লিকেট চেক করা