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

MongoDB-তে মান ইউনিক হলে ইনসার্ট, না হলে আপডেট (Upsert) কীভাবে করবেন?

upsert: true অপশন ব্যবহার

update() মেথডে { upsert: true } দিলে: ডকুমেন্ট পাওয়া গেলে আপডেট, না পাওয়া গেলে ইনসার্ট হয়।

উদাহরণ: ডকুমেন্ট তৈরি

> db.onlyInsertIfValueIsUniqueDemo.insertOne({"StudentName":"Larry","StudentAge":22});
{ "acknowledged" : true, "insertedId" : ObjectId("5c9a633815e86fd1496b38a4") }
> db.onlyInsertIfValueIsUniqueDemo.insertOne({"StudentName":"Mike","StudentAge":21});
{ "acknowledged" : true, "insertedId" : ObjectId("5c9a634a15e86fd1496b38a5") }
> db.onlyInsertIfValueIsUniqueDemo.insertOne({"StudentName":"Sam","StudentAge":24});
{ "acknowledged" : true, "insertedId" : ObjectId("5c9a635015e86fd1496b38a6") }

কেস ১: মান আছে (Mike) -> আপডেট

> db.onlyInsertIfValueIsUniqueDemo.update(
    { "StudentName": "Mike" },
    { $set: { "StudentAge": 27 } },
    { upsert: true }
);
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

ফলাফল: Mike-এর বয়স 21 -> 27 হয়েছে।

কেস ২: মান নেই (David) -> ইনসার্ট

> db.onlyInsertIfValueIsUniqueDemo.update(
    { "StudentName": "David" },
    { $set: { "StudentAge": 25 } },
    { upsert: true }
);
WriteResult({ "nMatched" : 0, "nUpserted" : 1, "nModified" : 0, "_id": ObjectId("...") })

ফলাফল: নতুন ডকুমেন্ট ইনসার্ট হয়েছে।

ফাইনাল ডেটা

Larry: 22, Mike: 27, Sam: 24, David: 25

নোট: MongoDB 3.2+ এ updateOne()/updateMany() সাথে upsert: true ব্যবহার করুন।

  1. MongoDB-তে প্রতিটি কর্মীর বেতন ১০% বাড়ানো

  2. MongoDB-এ নির্দিষ্ট ফিল্ড মান আপডেট করা ($set অপারেটর)

  3. MongoDB-এ নির্দিষ্ট ডকুমেন্টের ফিল্ড ইনক্রিমেন্ট করা ($inc অপারেটর)

  4. MySQL-এ শুধু একটি কলাম আপডেট করা