কম্পিউটার টিউটোরিয়াল

MongoDB-এ 'multi update only works with $ operators' এরর সমাধান


$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" } }) ব্যবহার করুন।


  1. MongoDB-তে স্টুডেন্ট আইডি এবং নাম দিয়ে ডকুমেন্ট আপডেট করা

  2. MongoDB-এ সাব-কালেকশন সহ কনকারেন্ট আপডেট (update with $push)

  3. MongoDB-তে ডকুমেন্ট এবং সাব-ডকুমেন্ট উদাহরণ ও আপডেট

  4. MongoDB-এ bulkWrite() দিয়ে এক কোয়েরিতে একাধিক ডকুমেন্ট আপডেট করা