MongoDB
PHP Manual

MongoDB::execute

(PECL mongo >=0.9.3)

MongoDB::executeJavaScript コードをデータベースサーバ上で実行する

説明

public array MongoDB::execute ( mixed $code [, array $args = array() ] )

Mongo データベースサーバは JavaScript エンジンを持っています。 このメソッドを使うと、任意の JavaScript をデータベース上で実行することができます。 大量のコレクションの操作を軽量に行ったり、 結果に対する何らかの処理をデータベース側で行うことでクライアント側への送信量を減らしたり といった際に有用です。

データベース内での JavaScript の実行時には書き込みロックを取得します。 つまり、他の操作をブロックするということです。長いスクリプトを実行する前にはこのことを考慮しましょう。

これは、データベースコマンドのラッパーで、次のコードと同じ意味です。

<?php

public function execute($code$args) {
    return 
$this->command(array('$eval' => $codeargs => $args));
}

?>

パラメータ

code

実行したい MongoCode あるいは文字列。

args

code に渡す引数。

返り値

評価した結果を返します。

例1 単純な MongoDB::execute() の例

<?php

$response 
$db->execute("function() { return 'Hello, world!'; }");
echo 
$response['retval'];

?>

上の例の出力は、 たとえば以下のようになります。


Hello, world!

例2 パラメータつきの MongoDB::execute() の例

オプションのパラメータ配列を JavaScript の関数に渡します。

<?php

$response 
$db->execute("function(greeting, name) { return greeting+', '+name+'!'; }", array("Good bye""Joe"));
echo 
$response['retval'];

?>

上の例の出力は、 たとえば以下のようになります。


Good bye, Joe!

例3 スコープの例

文字列のかわりに MongoCode オブジェクトを最初のパラメータに使うと、 JavaScript を実行するスコープを渡すことができます。

<?php

$func 

    
"function(greeting, name) { ".
        
"return greeting+', '+name+', says '+greeter;".
    
"}";
$scope = array("greeter" => "Fred");

$code = new MongoCode($func$scope);

$response $db->execute($code, array("Goodbye""Joe"));
echo 
$response['retval'];

?>

上の例の出力は、 たとえば以下のようになります。


Goodbye, Joe, says Fred

MongoDB
PHP Manual