MongoDB-এ upsert: true অপশন দিয়ে আপডেট করার সময় যদি ডকুমেন্ট না থাকে, তবে নতুন ডকুমেন্ট তৈরি হয়। এতে $set অপারেটর ব্যবহার করে নির্দিষ্ট ফিল্ড আপডেট করা যায়।
নমুনা ডেটা তৈরি
> db.updateWithUpsertDemo.insertOne({"StudentFirstName":"John","StudentAge":21});
{ "acknowledged": true, "insertedId": ObjectId("5cd2a61c345990cee87fd890") }
> db.updateWithUpsertDemo.insertOne({"StudentFirstName":"Larry","StudentAge":23});
{ "acknowledged": true, "insertedId": ObjectId("5cd2a624345990cee87fd891") }
> db.updateWithUpsertDemo.insertOne({"StudentFirstName":"David","StudentAge":24});
{ "acknowledged": true, "insertedId": ObjectId("5cd2a62c345990cee87fd892") }
সব ডকুমেন্ট দেখুন
> db.updateWithUpsertDemo.find().pretty();আউটপুট:
{
"_id": ObjectId("5cd2a61c345990cee87fd890"),
"StudentFirstName": "John",
"StudentAge": 21
}
{
"_id": ObjectId("5cd2a624345990cee87fd891"),
"StudentFirstName": "Larry",
"StudentAge": 23
}
{
"_id": ObjectId("5cd2a62c345990cee87fd892"),
"StudentFirstName": "David",
"StudentAge": 24
}
Upsert সহ আপডেট কোয়েরি
Larry-এর নাম Chris-এ পরিবর্তন করা হচ্ছে। যদি ডকুমেন্ট না থাকে, তবে নতুন তৈরি হবে:
> db.updateWithUpsertDemo.update(
{_id: ObjectId("5cd2a624345990cee87fd891")},
{"$set": {"StudentFirstName": "Chris"}},
{upsert: true}
);
WriteResult({ "nMatched": 1, "nUpserted": 0, "nModified": 1 })
আপডেট হওয়া ডকুমেন্ট যাচাই করুন
> db.updateWithUpsertDemo.find().pretty();আউটপুট (Larry এখন Chris):
{
"_id": ObjectId("5cd2a61c345990cee87fd890"),
"StudentFirstName": "John",
"StudentAge": 21
}
{
"_id": ObjectId("5cd2a624345990cee87fd891"),
"StudentFirstName": "Chris",
"StudentAge": 23
}
{
"_id": ObjectId("5cd2a62c345990cee87fd892"),
"StudentFirstName": "David",
"StudentAge": 24
}
মূল বিষয়: upsert: true সেট করলে মэтচ না হলে নতুন ডকুমেন্ট ইনসার্ট হয়, এবং $set দিয়ে শুধু নির্দিষ্ট ফিল্ড আপডেট হয়।