JS का उपयोग करने वाली प्रत्येक क्वेरी पुन:उपयोग कर सकती है या एक नया JS संदर्भ प्राप्त कर सकती है, जिस पर संग्रहीत JS ऑब्जेक्ट लोड किए जाते हैं। जो आप चाहते हैं उसे करने के लिए, आपको या तो चाहिए:
- संग्रहीत कोड को स्थापित करते समय स्वचालित रूप से चलाने के लिए mongod
- एक init विधि के लिए मैप्रिडस करें
पहला निश्चित रूप से अधिक दिलचस्प विशेषता है। पता चलता है कि mongodb v8 बिल्ड स्वचालित रूप से करता है (लेकिन आधिकारिक तौर पर समर्थित नहीं), लेकिन आधिकारिक स्पाइडरमोनकी बिल्ड नहीं।
मान लें कि आप कोड स्टोर करते हैं जैसे:
db.system.js.save({ _id: "mylib", value: "myprint = function() { print('installed'); return 'installed';" }
फिर v8 में आप अपने कोड में स्वतंत्र रूप से myprint() का उपयोग कर सकते हैं, लेकिन SM के साथ आपको mylib() को स्पष्ट रूप से कॉल करना होगा।
समाधान के रूप में आप एक अन्य विधि बना सकते हैं:
db.system.js.save({ _id: "installLib", value: "if (!libLoaded) mylib(); libLoaded = true;" }
और इसे अपने मानचित्र() फ़ंक्शन से कॉल करें।
इंजनों को मानकीकृत करने और स्वचालित चलाने की अनुमति देने के लिए टिकट बनाया गया:https://jira.mongodb.org /ब्राउज़/सर्वर-4450