11

Doctrine Mongo ODM で 2 つ以上のフィールドを正規表現で検索するクエリを書きたいと思います。SQL では次のようになります。

SELECT * FROM user WHERE name LIKE %search% OR surname LIKE %search%;

次のように、1 つのフィールドに対するクエリを記述できます。

$qb->field('surname')->equals(new \MongoRegex('/.*'.$this->search.'.*/i'));

しかし、より多くのフィールドを検索しようとすると途方に暮れます。

助けてくれてありがとう

4

2 に答える 2

17

実際には非常に簡単です。この質問を投稿してから5分後にわかりました

$qb->addOr($qb->expr()->field('surname')->equals(new \MongoRegex('/.*'.$this->search.'.*/i')));
$qb->addOr($qb->expr()->field('name')->equals(new \MongoRegex('/.*'.$this->search.'.*/i')));
于 2012-01-10T10:14:22.207 に答える
2

$or 演算子を使用する必要があります。これがドクトリンでどのように行われるかはわかりませんが、シェルでこれと同等のものを探しています:

db.people.find({ $or: [{surname: /^regex1/}, {surname: /^regex2/}] })
于 2012-01-09T18:36:42.970 に答える