Hay una colección de sistemas especiales denominada system.js que puede almacenar funciones de JavaScript para su reutilización.
Antes de comenzar
Esta tarea utiliza el legado mongo Shell para cargar funciones del servidor de la system.js colección. Esta versión del shell ya no es compatible. Para una solución alternativa en MongoDB Shell, consulte Escribir guiones.
Acerca de esta tarea
Tenga en cuenta las siguientes recomendaciones al utilizar system.js:
No almacene la lógica de la aplicación en la base de datos.
Existen limitaciones de rendimiento para ejecutar JavaScript dentro de MongoDB.
El código de la aplicación es más efectivo cuando comparte el control de versiones con la aplicación.
Pasos
Para almacenar una función, inserte la función en la colección system.js, como en estos ejemplos:
Almacenar funciones de JavaScript en la base de datos
Para almacenar funciones de JavaScript en la base de datos, inserte un documento con estos campos:
El campo
_idcontiene el nombre de la función y es único por base de datos.El campo
valuecontiene la definición de la función.
El siguiente ejemplo crea una función echo en la colección system.js:
db.system.js.insertOne( { _id: "echo", value : function(x) { return x; } } )
El siguiente ejemplo crea una función isEven en la colección system.js:
db.system.js.insertOne( { _id: "isEven", value: function (num) { return num % 2 === 0; } } )
Estas funciones, guardadas como tipo BSON, están disponibles para su uso desde cualquier contexto de JavaScript, como mapReduce $wherey.
Nota
Las funciones guardadas como el tipo BSON obsoleto de JavaScript (con alcance) no pueden ser utilizadas por mapReduce $wherey.
Ejecutar las funciones de JavaScript almacenadas
El siguiente ejemplo de código ejecuta la función
echoalmacenada ensystem.js:echo("test") test El siguiente ejemplo de código ejecuta la función
isEvenalmacenada ensystem.jsen el operador$whereen la coleccióntest_numbers:db.test_numbers.find({ $where: function () { return isEven(this.value); } }) { "_id" : ObjectId("668d7be41b55bec1bf191499"), "value" : 2 } { "_id" : ObjectId("668d7be41b55bec1bf19149b"), "value" : 4 } { "_id" : ObjectId("668d7be41b55bec1bf19149d"), "value" : 6 }