$set অপারেটর ব্যবহার করে মাল্টি আপডেট সমস্যা সমাধান
MongoDB-এ আপডেট কোয়েরিতে যদি আপনি কোনো আপডেট অপারেটর (যেমন $set, $inc ইত্যাদি) ছাড়া সরাসরি ফিল্ড আপডেট করার চেষ্টা করেন, তবে "multi update only works with $ operators" এরর দেখায়। সমাধান হলো $set ব্যবহার করা।
সঠিক সিনট্যাক্স
db.yourCollectionName.update(
{ },
{ $set: { "yourFieldName": "yourValue" } },
false, // upsert
true // multi
);
উদাহরণ
> db.unconditionalUpdatesDemo.insertOne({"ClientName":"Larry","ClientAge":24});
> db.unconditionalUpdatesDemo.insertOne({"ClientName":"Mike","ClientAge":26});
> db.unconditionalUpdatesDemo.insertOne({"ClientName":"Sam","ClientAge":27});
> db.unconditionalUpdatesDemo.insertOne({"ClientName":"Carol","ClientAge":29});
সব ডকুমেন্টের ClientName "Robert" করা
> db.unconditionalUpdatesDemo.update(
{ },
{ $set: { "ClientName": "Robert" } },
false, true
);
WriteResult({ "nMatched": 4, "nUpserted": 0, "nModified": 4 })
ফলাফল:
{
"_id" : ObjectId("5c8eb7372f684a30fbdfd557"),
"ClientName" : "Robert", "ClientAge" : 24
}
{
"_id" : ObjectId("5c8eb73f2f684a30fbdfd558"),
"ClientName" : "Robert", "ClientAge" : 26
}
{
"_id" : ObjectId("5c8eb7462f684a30fbdfd559"),
"ClientName" : "Robert", "ClientAge" : 27
}
{
"_id" : ObjectId("5c8eb7502f684a30fbdfd55a"),
"ClientName" : "Robert", "ClientAge" : 29
}
মডার্ন সিনট্যাক্স (MongoDB 3.2+): updateMany({}, { $set: { "ClientName": "Robert" } }) ব্যবহার করুন।