2012-06-04 29 views
12

Próbuję użyć wyrażeń regularnych do zapytania Mongodb przy użyciu Mongodb Mongodb ODM w Symfony 2.Jak używać wyrażeń regularnych z Mongodb ODM Doctrine?

Znam PHP mongo driver can do it. Jednak nie wiem jak to zrobić z Doctrine.

Czy używam tej samej klasy? Jak mogę odwołać się do MongoRegex z poziomu Symfony?

+0

Dla kogoś, kto nie przyzwyczajenie do korzystania z MongoRegex jako że została zaniechana mogą spróbować tego rozwiązania MongoRegex został depecated jak na http://php.net/manual/en/class.mongoregex. php http://stackoverflow.com/questions/36761669/symfony2-need-to-use-the-regular-expression-in-doctrines-mongodb-odm-to-check Dlatego dałem tę odpowiedź dla tych, którzy mogą się tym przejmować. –

Odpowiedz

28

To pojawiło się jakiś czas temu na liście mailingowej doctrine-user. Można użyć klasy \MongoRegex bezpośrednio w zapytaniach ODM:

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

Lub jeśli przy użyciu konstruktora zapytań:

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

Pamiętaj, że wielkość liter wzorce regex przednie zakotwiczone będą mogli korzystaj z indeksów najskuteczniej. Jest to omówione bardziej szczegółowo w Mongo docs.

+0

Muszę użyć nowej klasy MongoDB \ BSON \ Regex, ponieważ MongoRegex jest teraz deperetywany. Jak mogę użyć tego w projekcie Symfony2. var_dump ($ regex); http://php.net/manual/en/mongodb-bson-regex.construct.php –