MongoDB::execute
(PECL mongo >=0.9.3)
MongoDB::execute — Ejecuta código JavaScript en el servidor de bases de datos [obsoleto]
Descripción
public MongoDB::execute
(
mixed $code
[,
array $args
= array()
] ) :
array
Advertencia
La orden » eval,
la cual invoca este método, está obsoleta en MongoDB 3.0+.
El servidor de bases de datos de Mongo contiene un motor JavaScript. Este método permite
ejecutar cualquier código JavaScript en la base de datos. Puede resultar útil si se desea
trabajar ligeramente sobre algunas colecciones, o procesar algunos resultados en el lado del
servidor para reducir la cantidad de datos que se enviará al cliente.
Al ejecutar JavaScript en la base de datos se hace un bloqueo de escrituras, lo cual significa que se
bloquean otras operaciones. Asegúrese de que tiene esto en consideración antes de ejecutar scripts costosos.
Este método es una envoltura para la orden de base de datos
» eval.
Este método es básicamente:
<?php
public function execute($code, $args) {
return $this->command(array('eval' => $code, 'args' => $args));
}
?>
Si se tuviera una única sentencia en una única línea, MongoDB devuelve un
valor. Esto puede provocar comportamientos inesperados. Por ejemplo, el siguiente
código devuelvo "foo":
<?php
$db->execute('"foo";');
?>
Sin embargo, este código devuelve NULL
:
<?php
$db->execute('"bar"; "foo";'); // más de una sentencia
$db->execute('db.foo.count(
);'); // más de una línea
?>
Para evitar comportamientos inesperados, lo mejor es no dejar que MongoDB decida qué
devolver, usando en su lugar una sentencia "return" explícita. Podríamos cambiar
los ejemplos superiores por lo siguiente:
<?php
$db->execute('"bar"; return "foo";');
$db->execute('return db.foo.count(
);');
?>
Ahora, la primera sentencia devolverá "foo" y la segunda devolverá
un contador de la colección "foo".
Parámetros
-
code
-
MongoCode o texto a ejecutar.
-
args
-
Argumentos que se deben pasar a code.
Valores devueltos
Devuelve el resultado de la evaluación.
Ejemplos
Ejemplo #1 Ejemplo sencillo de MongoDB::execute()
<?php
$response = $db->execute("function() { return 'Hola, mundo!'; }");
echo $response['retval'];
?>
El resultado del ejemplo
sería algo similar a:
Hola, mundo!
Ejemplo #2 Ejemplo de parámetros en MongoDB::execute()
Pasaremos a la función JavaScript valores del array del parámetro opcional.
<?php
$response = $db->execute("function(despedida, nombre) { return despedida+', '+nombre+'!'; }", array("Hasta pronto", "Juan"));
echo $response['retval'];
?>
El resultado del ejemplo
sería algo similar a:
Hasta pronto, Juan!
Ejemplo #3 Ejemplo de ámbito
Si en lugar de un string, usáramos un MongoCode en el
primer parámetro, podrá pasarse un ámbito en el cual se ejecutará
JavaScript.
<?php
$func =
"function(despedida, nombre) { ".
"return despedida+', '+nombre+', dice '+despedidor;".
"}";
$scope = array("despedidor" => "Fran");
$code = new MongoCode($func, $scope);
$response = $db->execute($code, array("Hasta pronto", "Juan"));
echo $response['retval'];
?>
El resultado del ejemplo
sería algo similar a:
Hasta pronto, Juan, dice Fran