MongoDB-এ ডকুমেন্ট আপডেট করতে update() মেথড ব্যবহার করা হয়। দ্রষ্টব্য: নতুন ভার্সনে updateOne() এবং updateMany() ব্যবহার করা প্রস্তাবিত।
কলেকশন এবং ডকুমেন্ট তৈরি
> db.demo110.insertOne({"Name":"Chris"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e2eeb949fd5fd66da21447b") }
> db.demo110.insertOne({"Name":"David"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e2eeb9f9fd5fd66da21447c") }
>> db.demo110.insertOne({"Name":"Bob"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e2eeba39fd5fd66da21447d") }
সব ডকুমেন্ট দেখানো
> db.demo110.find();
আউটপুট:
{ "_id" : ObjectId("5e2eeb949fd5fd66da21447b"), "Name" : "Chris" }
{ "_id" : ObjectId("5e2eeb9f9fd5fd66da21447c"), "Name" : "David" }
{ "_id" : ObjectId("5e2eeba39fd5fd66da21447d"), "Name" : "Bob" }
ডকুমেন্ট আপডেট করার কোয়ারী
নির্দিষ্ট _id দিয়ে ডকুমেন্ট খুঁজে Name ফিল্ড "Robert" আপডেট করা হয়েছে:
> db.demo110.update({_id:ObjectId("5e2eeb9f9fd5fd66da21447c")}, {$set:{"Name":"Robert"}});
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
আপডেটের পর ডকুমেন্ট দেখানো
> db.demo110.find();
আউটপুট (David → Robert):
{ "_id" : ObjectId("5e2eeb949fd5fd66da21447b"), "Name" : "Chris" }
{ "_id" : ObjectId("5e2eeb9f9fd5fd66da21447c"), "Name" : "Robert" }
{ "_id" : ObjectId("5e2eeba39fd5fd66da21447d"), "Name" : "Bob" }
গুরুত্বপূর্ণ পয়েন্টসমূহ:
{_id: ObjectId(...)}- ইউনিক আইডেন্টিফায়ার দিয়ে সুনির্দিষ্ট ডকুমেন্ট টার্গেট করা$set- শুধু নির্দিষ্ট ফিল্ড আপডেট করে, অন্যান্য ফিল্ড অপরিবর্তিত থাকেWriteResult- nMatched: মিলে যাওয়া ডকুমেন্ট, nModified: আসলে পরিবর্তন হয়েছে
আধুনিক পদ্ধতি (MongoDB 3.2+):
db.demo110.updateOne({_id: ObjectId("...")}, {$set: {"Name": "Robert"}})- একটি ডকুমেন্টdb.demo110.updateMany({Name: "Chris"}, {$set: {"Name": "Robert"}})- একাধিক ডকুমেন্টdb.demo110.findOneAndUpdate(...)- আপডেট করে রিটার্নও করে
সতর্কতা: update() বিনা $set ব্যবহার করলে পুরো ডকুমেন্ট রিপ্লেস হয়ে যায় (শুধু _id বাদে)!