| ユーザフォーラムで議論/質問 | マニュアル検索 | ハイライト | ハイライトオフ | ポータル | php spot |
MongoDB::execute(PECL mongo >=0.9.3) MongoDB::execute — JavaScript コードをデータベースサーバー上で実行する [非推奨] 説明警告
このメソッドが実行する » eval コマンドは、 MongoDB 3.0+ では非推奨となりました。 Mongo データベースサーバーは JavaScript エンジンを持っています。 このメソッドを使うと、任意の JavaScript をデータベース上で実行することができます。 大量のコレクションの操作を軽量に行ったり、 結果に対する何らかの処理をデータベース側で行うことでクライアント側への送信量を減らしたり といった際に有用です。 データベース内での JavaScript の実行時には書き込みロックを取得します。 つまり、他の操作をブロックするということです。長いスクリプトを実行する前にはこのことを考慮しましょう。 これは、データベースコマンド » eval のラッパーで、次のコードと同じ意味です。
<?php MongoDB は、ひとつの文を一行に書くと return 文があるものとみなします。 これは、あまり直感的でない振る舞いのもととなります。 たとえば、これは "foo" を返します。
<?php
しかし、これらはどちらも
<?php この驚くべき振る舞いを回避するには、何を返すのかを MongoDB に決めさせるのではなく return する値を明示しておけばよいでしょう。 先ほどの例では、このように書き換えることができます。
<?php これで、最初の文は "foo" を返して 二番目の文は "foo" コレクションの数を返すようになります。 返り値評価した結果を返します。 例例1 単純な MongoDB::execute() の例
<?php 上の例の出力は、 たとえば以下のようになります。 Hello, world! 例2 パラメータつきの MongoDB::execute() の例 オプションのパラメータ配列を JavaScript の関数に渡します。
<?php 上の例の出力は、 たとえば以下のようになります。 Good bye, Joe! 例3 スコープの例 文字列のかわりに MongoCode オブジェクトを最初のパラメータに使うと、 JavaScript を実行するスコープを渡すことができます。
<?php 上の例の出力は、 たとえば以下のようになります。 Goodbye, Joe, says Fred 参考
|
各種マニュアル:
PHPマニュアル |
PEARマニュアル |
Smarty(英語)マニュアル |
PHP-GTKマニュアル |
「MongoDB::execute - JavaScript コードをデータベースサーバー上で実行する [非推奨]」をGoogle検索
|