MongoDB::execute
(PECL mongo >=0.9.3)
MongoDB::execute — Exécute le code JavaScript sur la base de données [Obsolète]
Description
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.
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
Historique
Version | Description |
---|---|
1.7.0 | Cette méthode est devenue obsolète, sachant qu'un résultat d'une commande » eval sous-jacente est devenu obsolète en MongoDB 3.0+. |
Version en cache
22/11/2024 05:26:17 Cette version de la page est en cache (à la date du 22/11/2024 05:26:17) afin d'accélérer le traitement. Vous pouvez activer le mode utilisateur dans le menu en haut pour afficher la dernère version de la page.Document créé le 30/01/2003, dernière modification le 26/10/2018
Source du document imprimé : https://www.gaudry.be/php-rf-mongodb.execute.html
L'infobrol est un site personnel dont le contenu n'engage que moi. Le texte est mis à disposition sous licence CreativeCommons(BY-NC-SA). Plus d'info sur les conditions d'utilisation et sur l'auteur.
Références
Ces références et liens indiquent des documents consultés lors de la rédaction de cette page, ou qui peuvent apporter un complément d'information, mais les auteurs de ces sources ne peuvent être tenus responsables du contenu de cette page.
L'auteur de ce site est seul responsable de la manière dont sont présentés ici les différents concepts, et des libertés qui sont prises avec les ouvrages de référence. N'oubliez pas que vous devez croiser les informations de sources multiples afin de diminuer les risques d'erreurs.