1

正規表現を値としてコレクションに保存しました。一致するかどうかに関係なく、mongodb でその正規表現に対して文字列をチェックしたいですか? 同じためにjavascriptコードを使用する必要があることを知りましたが、php-mongodbからは機能しません。

mongodb クライアント コンソールから動作しています。

ここで私のコード、

<?php

    $dbName = "XYZ";
    try
    {
            $dbInstanceName = $dbName;
            $mongoInstance  = new Mongo("localhost:27017", array("persist"    => "x"));
            $dbReference = $mongoInstance->$dbInstanceName;
            $db          = $mongoInstance->$dbInstanceName;
    }
    catch (Exception $e)
    {
            echo "<pre>";
            print_r($e);
            echo "</pre>";
            exit;
    }

    $query  = new MongoCode("function (){return RegExp(this.regCountry).test('India');}");

    $c = "Countries1";

    $cursor = $db->$c->find($query);


    if ($cursor->count() == 0)
    {
            echo "<pre>";
            print_r("No Data Found.!");
            echo "</pre>";
            exit;
    }
    else
    {

            $data = array();
            while ($cursor->hasNext())
            {
                    $cursor->next();
                    array_push($data, $cursor->current());
            }                
    }
    echo "<pre>";
    print_r($data);
    echo "</pre>";
    exit;

?>

動作しますが、何も返されません....!

応答:

Array
(

)

ここでは、コンソール画面の並べ替えで、指定された値を返します。

ここに画像の説明を入力

ここに私のデータサンプル:

ここに画像の説明を入力

どうしたの?

4

2 に答える 2

0

上記の私のコメントが機能しない場合は、これを変更してみてください。

$cursor = $db->$c->find($query);

に:

$cursor = $db->selectCollection($c)->find($query);
于 2012-07-24T13:40:40.910 に答える
0

最後に私は答えを得ました:

以下に示すコードを変更します

<?php

    $dbName = "Scrubly";
    try
    {
            $dbInstanceName = $dbName;
            $mongoInstance  = new Mongo("localhost:27017", array("persist"    => "x"));
            $dbReference = $mongoInstance->$dbInstanceName;
            $db          = $mongoInstance->$dbInstanceName;
    }
    catch (Exception $e)
    {
            echo "<pre>";
            print_r($e);
            echo "</pre>";
            exit;
    }

    $query = "function(){return db.Countries1.find(function (){return RegExp(this.regCountry).test('India');}).toArray();}";

    $result = $db->execute($query);
    echo "<pre>";
    print_r($result);
    echo "</pre>";
    exit;

?>

出力:

Array
(
[retval] => Array
    (
        [0] => Array
            (
                [_id] => MongoId Object
                    (
                        [$id] => 500e5b456bcb44780d000072
                    )

                [country] => India
                [countryCode] => IN
                [createdAt] => 2012-07-24 13:52:29
                [id] => 386
                [regCountry] => ^(.*)India(.*)$
                [updatedAt] => 2012-07-24 13:52:29
            )

    )

[ok] => 1
)
于 2012-07-25T07:22:38.290 に答える