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