Setiap kueri yang menggunakan JS dapat menggunakan kembali atau mendapatkan konteks JS baru, tempat objek JS yang tersimpan dimuat. Untuk melakukan apa yang Anda inginkan, Anda memerlukan:
- mongod untuk menjalankan kode yang tersimpan secara otomatis saat menginstalnya
- mareduce untuk memiliki metode init
Yang pertama pasti fitur yang lebih menarik. Ternyata build mongodb v8 otomatis melakukannya (tetapi tidak didukung secara resmi), tetapi bukan build spidermonkey resmi.
Katakanlah Anda menyimpan kode seperti:
db.system.js.save({ _id: "mylib", value: "myprint = function() { print('installed'); return 'installed';" }
Kemudian di v8 Anda dapat menggunakan myprint() secara bebas dalam kode Anda, tetapi dengan SM Anda perlu memanggil mylib() secara eksplisit.
Sebagai solusinya, Anda dapat membuat metode lain:
db.system.js.save({ _id: "installLib", value: "if (!libLoaded) mylib(); libLoaded = true;" }
Dan panggil dari fungsi map() Anda.
Membuat tiket untuk menstandardisasi mesin dan memungkinkan pengoperasian otomatis:https://jira.mongodb.org /browse/SERVER-4450