MongoDB::execute
(PECL mongo >=0.9.3)
MongoDB::execute — Exécute le code JavaScript sur la base de données [Obsolète]
Description
public MongoDB::execute
(
mixed $code
[,
array $args
= array()
] ) :
array
Avertissement
La commande » eval,
que cette méthode appelle, est obsolète en MongoDB 3.0 et supérieur.
Le serveur de base de données Mongo exécute un moteur Javascript.
Cette méthode vous permet d'exécuter du Javascript arbitraire sur la base
de données. Ceci peut être utile si vous voulez toucher un petit
nombre de collections, ou pour traiter quelques résultats issus de la
base de données afin de réduire la quantitié de données à envoyer au client.
L'exécution de Javascript dans la base de données pose un verrou en
écriture, signifiant que les autres opérations sont bloquées.
Gardez-le bien à l'esprit avant d'exécuter un script conséquant.
Ceci est un wrapper pour la commande
» eval
de base de données. Cette méthode est équivalente à :
<?php
public function execute($code, $args) {
return $this->command(array('eval' => $code, 'args' => $args));
}
?>
MongoDB implique une instruction de retour si vous avez une requête
unique sur une seule ligne. Ceci peut causer des comportements
non-intuitifs. Par exemple, l'exemple suivant retournera "foo" :
<?php
$db->execute('"foo";');
?>
Cependant, ceci retournera NULL
:
<?php
$db->execute('"bar"; "foo";'); // plus d'une requête
$db->execute('db.foo.count(
);'); // plus d'une ligne
?>
Afin d'éviter tout comportement non-désiré, il convient de ne pas
laisser MongoDB choisir ce qu'il doit retourner, mais explicitement
définir une valeur de retour. Dans l'exemple ci-dessus, nous pouvons
le modifier comme ceci :
<?php
$db->execute('"bar"; return "foo";');
$db->execute('return db.foo.count(
);');
?>
Maintenant, la première requête retournera "foo", et la seconde
retournera un comptage de la collection "foo".
Liste de paramètres
-
code
-
un objet MongoCode ou une chaîne
a exécuter.
-
args
-
Les arguments à passer à la requête code
.
Valeurs de retour
Retourne le résultat de l'évaluation.
Exemples
Exemple #1 Exemple avec MongoDB::execute()
<?php
$response = $db->execute("function() { return 'Bonjour le monde !'; }");
echo $response['retval'];
?>
L'exemple ci-dessus va afficher quelque chose de similaire à :
Bonjour le monde !
Exemple #2 Exemple avec MongoDB::execute()
Le tableau optionnel de paramètres sera passé à la fonction Javascript.
<?php
$response = $db->execute("function(greeting, name) { return greeting+', '+name+'!'; }", array("Au revoir", "Joe"));
echo $response['retval'];
?>
L'exemple ci-dessus va afficher quelque chose de similaire à :
Au revoir, Joe!
Exemple #3 Exemple de porté
Si un objet MongoCode est utilisé à la place d'une chaîne
comme premier paramètre, un scope peut être passé dans lequel le Javascript
sera exécuté.
<?php
$func =
"function(greeting, name) { ".
"return greeting+', '+name+', dit '+greeter;".
"}";
$scope = array("greeter" => "Fred");
$code = new MongoCode($func, $scope);
$response = $db->execute($code, array("Au revoir", "Joe"));
echo $response['retval'];
?>
L'exemple ci-dessus va afficher quelque chose de similaire à :
Au revoir, Joe, dit Fred