MongoDB-এ একটি ফিল্ডকে নিজের মান দিয়ে আপডেট করার সীমাবদ্ধতা
MongoDB-এ সরাসরি একটি ফিল্ডকে নিজের মান দিয়ে আপডেট করা যায় না (যেমন: Name = Name + " text")। এর পরিবর্তে $set এবং অগ্রেশন পাইপলাইন বা অ্যাপ্লিকেশন লেভেলে প্রসেস করতে হয়।
নমুনা সংগ্রহ তৈরি
> db.demo256.insertOne({"Name":"Chris"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e47a3e91627c0c63e7dba8b") }
> db.demo256.insertOne({"Name":"Bob"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e47a3ea1627c0c63e7dba8c") }
> db.demo256.insertOne({"Name":"David"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e47a3eb1627c0c63e7dba8d") }
সব ডকুমেন্ট দেখানো
> db.demo256.find();
আউটপুট:
ভুল পদ্ধতি (স্ট্রিং কনক্যাটেনেশন সরাসরি update-এ কাজ করে না)
> db.demo256.update({}, {$set:{"Name":"Name" + " is a student"}}); WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })ফলাফল (ভুলভাবে "Name is a student" লেখা গেছে):
সঠিক পদ্ধতি (MongoDB 4.2+): অগ্রেশন পাইপলাইন ব্যবহার করে $concat দিয়ে আপডেট করতে হয়:
db.demo256.updateMany({}, [{ $set: { Name: { $concat: ["$Name", " is a student"] } } }])