MongoDB जावास्क्रिप्ट फंक्शन्स को system.js सिस्टम संग्रह में संग्रहीत करने की अनुमति देता है। उन्हें db.eval() (निरस्त) के साथ निष्पादित किया जा सकता है या एप्लिकेशन कोड में लोड किया जा सकता है। नोट: db.eval MongoDB 4.4+ में निरस्त है और हटा दिया गया है; सर्वर-साइड JS निष्पादन से बचें।
फंक्शन संग्रहीत करें
> 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"
आधुनिक विकल्प (अनुशंसित)
- एप्लिकेशन-लेयर लॉजिक: अपने एप्लिकेशन कोड (Node.js, Python, Java, आदि) में फंक्शन लॉजिक रखें।
- एग्रीगेशन एक्सप्रेशन: डेटा परिवर्तन के लिए
$function(MongoDB 4.4+) या बिल्ट-इन ऑपरेटर्स का उपयोग करें। - ट्रिगर्स/चेंज स्ट्रीम्स: रिएक्टिव सर्वर-साइड लॉजिक के लिए Atlas ट्रिगर्स या चेंज स्ट्रीम्स का उपयोग करें।
$function उदाहरण (MongoDB 4.4+ एग्रीगेशन)
> db.demo.aggregate([
{ $project: {
result: { $function: {
body: function(name) { return "Hello " + name; },
args: [ "$name" ],
lang: "js"
}}
}}
]);
सर्वोत्तम अभ्यास
system.jsऔरdb.evalका उपयोग न करें; वे लॉकिंग, प्रतिकृति और सुरक्षा समस्याएं पैदा करते हैं।- व्यावसायिक तर्क को एप्लिकेशन लेयर में रखें।
- सर्वर-साइड गणना के लिए, एग्रीगेशन पाइपलाइन ऑपरेटर्स (
$add,$cond,$map, आदि) पसंद करें।