MongoDB-এ খালি কোয়ারি {} দিয়ে প্রথম ডকুমেন্ট আপডেট করা (upsert)
যদি কোয়ারি খালি {} দেওয়া হয়, তবে MongoDB প্রথম ডকুমেন্টটি (ন্যাচারাল অর্ডার) আপডেট করে। upsert:true থাকলে মিলে না গেলে নতুন ডকুমেন্ট তৈরি করে। এটি সিংগল ডকুমেন্ট আপডেটের ডিফল্ট আচরণ।
উদাহরণ: ডেটা ইনসার্ট
> db.demo162.insertOne({"StudentName":"Chris"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e3684359e4f06af551997c2") }
> db.demo162.insertOne({"StudentName":"Bob"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e3684389e4f06af551997c3") }
> db.demo162.insertOne({"StudentName":"David"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e36843c9e4f06af551997c4") }
সব ডকুমেন্ট দেখানো (নোট: আউটপুটে StudentAge থাকে কিন্তু ইনসার্টে দিয়ে নি — সম্ভবত পূর্বে ছিল)
> db.demo162.find();
আউটপুট:
{ "_id" : ObjectId("5e3684359e4f06af551997c2"), "StudentName" : "Chris", "StudentAge" : 23 }
{ "_id" : ObjectId("5e3684389e4f06af551997c3"), "StudentName" : "Bob" }
{ "_id" : ObjectId("5e36843c9e4f06af551997c4"), "StudentName" : "David" }
প্রথম ডকুমেন্টে StudentAge=23 সেট করা (upsert:true)
> db.demo162.update({},{$set:{"StudentAge":23}},{upsert:true});
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
আপডেট পর পরিদর্শন
> db.demo162.find();
আউটপুট:
{ "_id" : ObjectId("5e3684359e4f06af551997c2"), "StudentName" : "Chris", "StudentAge" : 23 }
{ "_id" : ObjectId("5e3684389e4f06af551997c3"), "StudentName" : "Bob" }
{ "_id" : ObjectId("5e36843c9e4f06af551997c4"), "StudentName" : "David" }
ব্যাখ্যা
{}— খালি কোয়ারি: কালেকশনের প্রথম ডকুমেন্ট টার্গেট হয়।{$set:{"StudentAge":23}}— StudentAge ফিল্ড সেট/আপডেট।{upsert:true}— যদি কোনো ডকুমেন্ট মেলে না (কালেকশন খালি) তবে নতুন ডকুমেন্ট তৈরি হবে।- শুধু প্রথম ডকুমেন্টে
StudentAgeযোগ হয়েছে, বাকিগুলো অপরিবর্তিত।
সুপারিশ: নির্দিষ্ট ডকুমেন্ট আপডেট করতে সবসময় স্পষ্ট কোয়ারি (যেমন {_id: ...}) দিন। খালি কোয়ারি প্রোডাকশনে রিস্কি।