কম্পিউটার টিউটোরিয়াল

MongoDB-এ স্টোরড ফাংশন এক্সিকিউট করা

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() dengan viewOn বা এटलাস ফাংশন ব্যবহার করুন।
  • এক্সপ্রেশন অপারেটর: অগ্রেশন পাইপলাইনে $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() প্রোডাকশনে ব্যবহার করবেন না; এটি লক হোল্ড করে এবং শার্ডেড ক্লাস্টারে কাজ করে না।

  1. MongoDB-তে সাবডকুমেন্টের অ্যারে কুয়েরি

  2. MongoDB-এ _id দিয়ে গ্রুপ করে ডকুমেন্ট কাউন্ট করা

  3. MongoDB-এ কালেকশন রিনেম করা (renameCollection)

  4. MongoDB-তে এমবেডেড ডকুমেন্ট কোয়েরি করা (aggregate + $unwind)