Docs Menu
Docs Home
/
Manual de base de datos

Almacene una función de JavaScript en el servidor

Hay una colección de sistemas especiales denominada system.js que puede almacenar funciones de JavaScript para su reutilización.

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 scripts.

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.

Para almacenar una función, inserte la función en la colección system.js, como en estos ejemplos:

1
db.test_numbers.insertMany([
{ value: 1 },
{ value: 2 },
{ value: 3 },
{ value: 4 },
{ value: 5 },
{ value: 6 }
])
2

Para almacenar funciones de JavaScript en la base de datos, inserte un documento con estos campos:

  • El campo _id contiene el nombre de la función y es único por base de datos.

  • El campo value contiene 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.

3
db.loadServerScripts()
4
  1. El siguiente ejemplo de código ejecuta la función echo almacenada en system.js:

    echo("test")
    test
  2. El siguiente ejemplo de código ejecuta la función isEven almacenada en system.js en el operador $where en la colección test_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 }

Next

¿Qué es MongoDB?

En esta página