2012-06-04 19 views
12

私はPHP mongo driver can do itを知っているsymfonyの2DoctrineのMongodb ODMで正規表現を使用するにはどうすればよいですか?

にDoctrineのMongoDBのODMを使用してMongoDBのを照会するために正規表現を使用しようとしています。しかし、私はDoctrineでこれを行う方法を知らない。

私は同じクラスを使用しますか? Symfony内からMongoRegexを参照するにはどうすればよいですか?

+0

。 php http://stackoverflow.com/questions/36761669/symfony2-need-to-use-the-regular-expression-in-doctrines-mongodb-odm-to-check これは私がこの答えを与えた理由ですこれについて心配するかもしれない人々のために。 –

答えて

28

これは少し前にdoctrine-userメーリングリストで公開されました。あなたのODMに直接\MongoRegexクラスを使用することができ照会:

$documentRepository->findBy(array(
    'foo' => new \MongoRegex('/^bar/'), 
)); 

またはクエリビルダを使用している場合を:

$queryBuilder->field('foo')->equals(new \MongoRegex('/^bar/')); 

は、フロントアンカー、大文字と小文字を区別正規表現パターンのことができるようになることを覚えておいてください索引を最も効率的に使用します。これは、Mongo docsでより詳細に説明されています。

+0

MongoRegexがデリケートされたので、新しいMongoDB \ BSON \ Regexクラスを使用する必要があります。これをSymfony2プロジェクトでどうやって使うことができますか? var_dump($ regex); http://php.net/manual/en/mongodb-bson-regex.construct.php –

1

/^ A /、/^Aながら、あなたは、詳細 How to use Reserved characters in createQueryBuilder and MongoRegixのためにさらに

をスタックオーバーフローの質問に従うことができます。 /、および/またはa。 $ /同等の文字列と一致しても、パフォーマンス特性は異なります。これらの式はすべて、適切なインデックスが存在する場合はインデックスを使用します。ただし、/^a。 /、および/またはa。 $ /は遅くなります。/^ a /は接頭辞にマッチした後にスキャンを停止することができます。それは MongoRegexが http://php.net/manual/en/class.mongoregexあたりとしてdepecatedされたこのソリューションを試すことができなくなりましたとしてMongoRegexを使用する習慣はありません誰かのために Mongo Docs Regix

関連する問題