MongoDB-এ update() ও $push ব্যবহার করে শর্তসাপেক্ষ অ্যারে উপাদান আপডেট
অ্যারে অফ অবজেক্টে নির্দিষ্ট শর্তে মিলা অবজেক্টের ভেতরের অ্যারেতে নতুন মান পুশ করতে কোয়ারিতে পজিশনাল $ অপারেটর ব্যবহার করা হয়।
উদাহরণ: ডেটা ইনসার্ট
> db.demo9.insertOne({"StudentDetails":[{"StudentName":"Chris","ListOfSubject":["MySQL","Java"]}]});
{ "acknowledged" : true, "insertedId" : ObjectId("5e0f6438d7df943a7cec4f94") }
প্রদর্শন
> db.demo9.find().pretty();
আউটপুট:
{ "_id" : ObjectId("5e0f6438d7df943a7cec4f94"), "StudentDetails" : [ { "StudentName" : "Chris", "ListOfSubject" : [ "MySQL", "Java" ] } ] }
শর্তসাপেক্ষ পুশ (StudentName="Chris" হলে ListOfSubject-এ "MongoDB" যোগ)
> db.demo9.update( { "StudentDetails.StudentName":"Chris"}, {$push:{"StudentDetails.$.ListOfSubject":"MongoDB"}});
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
আপডেট পর পরিদর্শন
> db.demo9.find().pretty();
আউটপুট:
{ "_id" : ObjectId("5e0f6438d7df943a7cec4f94"), "StudentDetails" : [ { "StudentName" : "Chris", "ListOfSubject" : [ "MySQL", "Java", "MongoDB" ] } ] }
ব্যাখ্যা
{"StudentDetails.StudentName":"Chris"}— কোয়ারি:StudentDetailsঅ্যারেতেStudentName="Chris"가진 উপাদান খুঁজে।{$push:{"StudentDetails.$.ListOfSubject":"MongoDB"}}—$= মিলা উপাদানের পজিশন (ইন্ডেক্স ০)। সেটারListOfSubjectঅ্যারেতে "MongoDB" পুশ।- সতর্কতা: একাধিক উপাদান মিলে (ডুপ্লিকেট StudentName) শুধু প্রথমটি আপডেট হয়। সব আপডেট করতে
arrayFilters(MongoDB 3.6+) ব্যবহার করুন।
আধুনিক সিনট্যাক্স: updateOne({...}, {$push: {...}}) বা updateMany({...}, {$push: {...}}, {arrayFilters: [...]})।