আপনি আপসার্ট ব্যবহার করতে পারেন অর্থাৎ যখনই আপনি একটি মান সন্নিবেশ করেন এবং এটি ইতিমধ্যেই বিদ্যমান থাকে তখন আপডেটটি সঞ্চালিত হবে। যদি মানটি ইতিমধ্যেই বিদ্যমান না থাকে তবে এটি সন্নিবেশ করা হবে৷
আসুন প্রথমে ডকুমেন্ট সহ একটি সংগ্রহ তৈরি করি
> 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") }
Find() পদ্ধতি
এর সাহায্যে একটি সংগ্রহ থেকে সমস্ত নথি প্রদর্শন করার জন্য নিম্নলিখিত প্রশ্ন রয়েছে> db.onlyInsertIfValueIsUniqueDemo.find().pretty();
এটি নিম্নলিখিত আউটপুট তৈরি করবে
{ "_id" : ObjectId("5c9a633815e86fd1496b38a4"), "StudentName" : "Larry", "StudentAge" : 22 } { "_id" : ObjectId("5c9a634a15e86fd1496b38a5"), "StudentName" : "Mike", "StudentAge" : 21 } { "_id" : ObjectId("5c9a635015e86fd1496b38a6"), "StudentName" : "Sam", "StudentAge" : 24 }
কেস 1 :যখন একটি মান ইতিমধ্যেই বিদ্যমান থাকে তখন নিম্নলিখিত প্রশ্নটি করা হয়৷ যেহেতু আপনি যে মানটি সন্নিবেশ করছেন তা ইতিমধ্যেই বিদ্যমান, এটি আপডেট করা হয়
> db.onlyInsertIfValueIsUniqueDemo.update({StudentName:"Mike"},{$set:{"StudentAge":27}},{ upsert: true}); WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
সব কাগজপত্র আরেকবার দেখুন। নিম্নোক্ত প্রশ্নটি
> db.onlyInsertIfValueIsUniqueDemo.find().pretty();
এটি নিম্নলিখিত আউটপুট তৈরি করবে
{ "_id" : ObjectId("5c9a633815e86fd1496b38a4"), "StudentName" : "Larry", "StudentAge" : 22 } { "_id" : ObjectId("5c9a634a15e86fd1496b38a5"), "StudentName" : "Mike", "StudentAge" : 27 } { "_id" : ObjectId("5c9a635015e86fd1496b38a6"), "StudentName" : "Sam", "StudentAge" : 24 }
কেস 2 :যখন একটি মান অনন্য হয় তখন নিম্নলিখিত প্রশ্নটি করা হয়৷ যেহেতু আপনি যে মানটি সন্নিবেশ করছেন তা ইতিমধ্যেই বিদ্যমান নেই, তাই এটি সন্নিবেশিত হয়
>db.onlyInsertIfValueIsUniqueDemo.update({StudentName:"David"},{$set:{"StudentAge":25}},{ upsert: true}); WriteResult({ "nMatched" : 0, "nUpserted" : 1, "nModified" : 0, "_id" : ObjectId("5c9a654ce628c11759caea54") })
সব নথি আবার একবার দেখুন. নিম্নোক্ত প্রশ্নটি
> db.onlyInsertIfValueIsUniqueDemo.find().pretty();
এটি নিম্নলিখিত আউটপুট তৈরি করবে
{ "_id" : ObjectId("5c9a633815e86fd1496b38a4"), "StudentName" : "Larry", "StudentAge" : 22 } { "_id" : ObjectId("5c9a634a15e86fd1496b38a5"), "StudentName" : "Mike", "StudentAge" : 27 } { "_id" : ObjectId("5c9a635015e86fd1496b38a6"), "StudentName" : "Sam", "StudentAge" : 24 } { "_id" : ObjectId("5c9a654ce628c11759caea54"), "StudentName" : "David", "StudentAge" : 25 }