findAndModify() ব্যবহার করে অটো-ইনক্রিমেন্ট সিকোয়েন্স তৈরি
MongoDB-এ অটো-ইনক্রিমেন্ট ফিল্ড (যেমন SQL-এর AUTO_INCREMENT) বাস্তবায়ন করতে findAndModify() ব্যবহার করে একটি সিকোয়েন্স কালেকশন মেইন্টেইন করা হয়।
নমুনা সংগ্রহ তৈরি
> db.demo261.insertOne({_id:100,Name:"Chris"});
{ "acknowledged" : true, "insertedId" : 100 }
সিকোয়েন্স কালেকশন তৈরি এবং ফাংশন
> db.demo262.insert({_id:"newId",sequence_value:0})
WriteResult({ "nInserted" : 1 })
> function getNext(sName){
var d= db.demo262.findAndModify({
query:{_id: sName},
update: {$inc:{sequence_value:1}},
new:true
});
return d.sequence_value;
}
ফাংশন কল করে সিকোয়েন্স জেনারেট
> db.demo261.insert({ "_id":getNext("newId"), "Name":"Chris" })
WriteResult({ "nInserted" : 1 })
> db.demo261.insert({ "_id":getNext("newId"), "Name":"Bob" })
WriteResult({ "nInserted" : 1 })
ফলাফল দেখানো
> db.demo261.find();
আউটপুট:
ব্যাখ্যা: findAndModify() অ্যাটমিক্যালি sequence_value বাড়ায় এবং নতুন মান ফেরত দেয়। এটি কনকারেন্ট এনভায়রনমেন্টেও সেফ। MongoDB 4.2+ এ findOneAndUpdate() ব্যবহার করা ভালো।