1

「MongoDB $またはPHP」についてはたくさんの話題があることは知っていますが、これを理解することはできません。

私がコレクションを持っていると仮定しますCompagnies:

$Mongo->Compagnies->insert({"Name":"BoldLine", "Service":"Billing", "Description":"Hello World"});
$Mongo->Compagnies->insert({"Name":"Behobe", "Service":"Development", "Description":"Here we are cool"});

私の必要は、正規表現を使用して、このコレクションに対して「または」クエリを実行することです。だから私はした:

use \MongoRegex as MR;

$regex = new MR ("/B/i");    //Where field contains the letter 'B'

$Mongo->Compagnies->find(
    array(
        '$or'   =>  array(
            array(
                "Name"          =>  $regex,
                "Service"       =>  $regex,
                "Description"   =>  $regex
                )
            )
        )
);

しかし、結果は0です。なんで?結果は 2 行ではないでしょうか。今私がする場合:

$Mongo->Compagnies->find(
    array(
        '$or'   =>  array(
            array(
                "Name"          =>  $regex,
                "Service"       =>  $regex
                )
            )
        )
);

結果は最初の行のみになります。名前に「B」も含まれているため、2行目がクエリと一致しない理由がわかりません。「$or」演算子は「$and」のように機能するようです。

私は何か見落としてますか?1 つまたは複数のフィールドにこの文字が含まれていない場合でも、3 つのフィールドの 1 つに文字「B」を含むすべてのエンティティを選択するにはどうすればよいですか?

ありがとうございました :)

4

1 に答える 1

1

各または条件は、異なる配列にある必要があります。これを試して:

$Mongo->Compagnies->find(
array(
    '$or'   =>  array(
        array(
            "Name"             =>  $regex,
        ),
         array(
            "Service"          =>  $regex,
        ),
         array(
            "Description"      =>  $regex,
        ),
        )
    )
);
于 2016-11-16T10:54:16.277 に答える