MongoDB-এ সিস্টেম জএস (system.js) কালেকশনে ফাংশন সংরক্ষণ এবং এক্সিকিউট
MongoDB-এ জাভাস্ক্রিপ্ট ফাংশন পুনরায় ব্যবহার করার জন্য system.js সিস্টেম কালেকশনে সংরক্ষণ করা যায়। db.system.js.save() দিয়ে স্টোর এবং db.eval() দিয়ে এক্সিকিউট করা হয় (নোট: db.eval() ডিপ্রিকেটেড)।
ফাংশন স্টোর করা
> db.system.js.save({
_id: "displayMessage",
value: function (data) {
return 'The Name is: ' + data;
}
})
WriteResult({ "nMatched" : 0, "nUpserted" : 1, "nModified" : 0, "_id" : "displayMessage" })
ফাংশন এক্সিকিউট করা (ডিপ্রিকেটেড)
> db.eval("displayMessage('John')")
WARNING: db.eval is deprecated
ফলাফল
The Name is: John
গভীরভাবে
system.js: স্পেশাল সিস্টেম কালেকশন যেখানে ফাংশনগুলো স্টোর থাকে।_id: ফাংশনের নাম (কল করার সময় ব্যবহার)।value: ফাংশন বডি।db.eval(): সার্ভার-সাইড জাভাস্ক্রিপ্ট এক্সিকিউশন (সিকিউরিটি এবং পারফরম্যান্স রিস্কের কারণে ডিপ্রিকেটেড)।
আধুনিক বিকল্প এবং সেরা অনুশীলন
- অ্যাপ্লিকেশন লেয়ারে লজিক রাখুন: ডেটাবেসে বিজনেস লজিক রাখা অ্যান্টি-প্যাটার্ন।
- MongoDB Stored Procedures (4.4+):
db.createCollection()denganviewOnবা এटलাস ফাংশন ব্যবহার করুন। - এক্সপ্রেশন অপারেটর: অগ্রেশন পাইপলাইনে
$function(MongoDB 4.4+) ব্যবহার করুন।
উদাহরণ: $function ব্যবহার (MongoDB 4.4+)
db.demo.aggregate([
{ $project: { result: { $function: { body: function(name) { return "Hello " + name; }, args: ["$name"], lang: "js" } } } }
])
সতর্কতা: db.eval() প্রোডাকশনে ব্যবহার করবেন না; এটি লক হোল্ড করে এবং শার্ডেড ক্লাস্টারে কাজ করে না।