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

MongoDB-এ ডকুমেন্টের অ্যারেতে অবজেক্ট আপডেট (নেস্টেড আপডেটিং)?


এক ডকুমেন্টের অ্যারেতে অবজেক্ট আপডেট করতে, আপনাকে update() মেথড ব্যবহার করতে হবে। update() মেথড বুঝতে, আসুন একটি কালেকশন ডকুমেন্ট সহ তৈরি করি। কালেকশন ডকুমেন্ট সহ তৈরির কোয়েরি নিম্নরূপ:

> db.updateObjects.insertOne({"CustomerId":1,"CustomerName":"Larry","TotalItems":100, ... "ItemDetails":[ ... { ... "NameOfItem":"Item_1", ... "Amount":450 ... }, ... { ... "NameOfItem":"Item_2", ... "Amount":500 ... }, ... { ... "NameOfItem":"Item_3", ... "Amount":200 ... } ... ] ... } ... );

নিচে আউটপুট দেওয়া হলো:

{    "acknowledged" : true,    "insertedId" : ObjectId("5c6d688b0c3d5054b766a769") }

এখন find() মেথডের সাহায্যে কালেকশন থেকে ডকুমেন্ট প্রদর্শন করুন। কোয়েরি নিম্নরূপ:

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

নিচে আউটপুট দেওয়া হলো যা উপরে তৈরি কালেকশন থেকে ডকুমেন্ট দেখাচ্ছে:

{    "_id" : ObjectId("5c6d688b0c3d5054b766a769"),    "CustomerId" : 1,    "CustomerName" : "Larry",    "TotalItems" : 100,    "ItemDetails" : [       {          "NameOfItem" : "Item_1",          "Amount" : 450       },       {          "NameOfItem" : "Item_2",          "Amount" : 500       },       {          "NameOfItem" : "Item_3",          "Amount" : 200       }    ] }

"Amount":200 কে ১৩০ মান দিয়ে ইনক্রিমেন্ট করুন। কোয়েরি নিম্নরূপ। এখানে, আমরা একটি ফিল্ডের মান ইনক্রিমেন্ট করতে $inc অপারেটর ব্যবহার করেছি:

> db.updateObjects.update({"CustomerId":1,"ItemDetails.NameOfItem":"Item_3"}, {$inc:{"ItemDetails.$.Amount":130}}, ... false,true); WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

আমরা সফলভাবে মানটি আপডেট/ইনক্রিমেন্ট করেছি। আসুন কালেকশন থেকে ডকুমেন্ট প্রদর্শন করি। কোয়েরি নিম্নরূপ:

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

নিচে আউটপুট দেওয়া হলো:

{    "_id" : ObjectId("5c6d688b0c3d5054b766a769"),    "CustomerId" : 1,    "CustomerName" : "Larry",    "TotalItems" : 100,    "ItemDetails" : [       {          "NameOfItem" : "Item_1",          "Amount" : 450       },       {          "NameOfItem" : "Item_2",          "Amount" : 500       },       {          "NameOfItem" : "Item_3",          "Amount" : 330       }    ] }

স্যাম্পল আউটপুটটি দেখুন, Amount ২০০ কে ১৩০ দিয়ে ইনক্রিমেন্ট করা হয়েছে, যা এখন ৩৩০।

  1. MongoDB-এ নেস্টেড অ্যারে সর্ট করা

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

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

  4. MongoDB-এ অবজেক্টের অ্যারে থেকে নেস্টেড ডকুমেন্ট কোয়েরি করা ($elemMatch)