Importante
A partir de MongoDB 8.0, JavaScript del lado del servidor está en desuso.
system.js La funcionalidad puede no funcionar con todas las funciones.
Existe una colección especial del sistema llamada system.js que puede almacenar funciones JavaScript para su reutilización.
Antes de comenzar
Esta tarea utiliza la herencia Shell mongo para cargar funciones del lado del servidor desde la colección system.js. Esta versión del shell ya no es compatible. Para una solución alternativa en MongoDB Shell, consulta Escribe scripts.
Acerca de esta tarea
Tenga en cuenta las siguientes recomendaciones al utilizar system.js:
No almacenar 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 control de versiones con la aplicación.
Pasos
Para almacenar una función, insértela en la colección system.js, como en estos ejemplos:
Almacenar funciones de JavaScript en la base de datos
Para almacenar funciones 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 en cualquier contexto de JavaScript, como mapReduce y $where.
Nota
Las funciones guardadas como el tipo obsoleto BSON JavaScript (con alcance) no pueden ser utilizadas por mapReduce y $where.
Ejecuta 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$wheresobre 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 }