JavaScript en el servidor
$where, $function, $accumulator y mapReduce con un intérprete aislado.
TeselaDB ejecuta el JavaScript de las consultas de MongoDB: $where, $function, $accumulator y mapReduce. Lo hace
con un intérprete propio escrito en Rust que solo ve los documentos que recibe.
db.pedidos.aggregate([
{
$addFields: {
iva: {
$function: {
body: "function (total) { return Math.round(total * 0.21 * 100) / 100 }",
args: ["$total"],
lang: "js",
},
},
},
},
]);Límites
Cada ejecución tiene límites de pasos, memoria y tiempo, como en MongoDB. Las fechas locales de JavaScript van en UTC y
los tipos de BSON se ven con sus nombres de MongoDB (NumberLong, ObjectId…).
Desactivarlo
Arranca los nodos con --noscripting (o security.javascriptEnabled: false en el fichero de configuración) y las
consultas con JavaScript responden con error.
mapReduce está obsoleto en MongoDB, pero se mantiene porque mongosh y los drivers lo siguen enviando. Para código
nuevo usa el framework de agregación.