2012-06-04 20 views
12

Estoy tratando de utilizar expresiones regulares para consultar mongodb usando Doctrina de MongoDB ODM en Symfony 2.¿Cómo puedo usar expresiones regulares con Mongodb ODM de Doctrine?

Sé que el PHP mongo driver can do it. Sin embargo, no sé cómo hacer esto con Doctrine.

¿Utilizo la misma clase? ¿Cómo hago referencia a MongoRegex desde Symfony?

+0

Para alguien que no acostumbra a utilizar el MongoRegex como que se desaprobó pueden probar esta solución MongoRegex se ha depecated según el 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 Es por eso que he dado esta respuesta para aquellos que puedan estar preocupados por esto. –

Respuesta

28

Esto apareció hace un tiempo en la lista de correo doctrine-user. Puede utilizar la clase \MongoRegex directamente en sus consultas ODM:

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

O si se utiliza un generador de consultas:

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

Tenga en cuenta que, patrones de expresiones regulares entre mayúsculas y minúsculas delanteros-anclado podrán usa índices de manera más eficiente. Esto se discute con más detalle en el Mongo docs.

+0

Necesito usar la nueva clase MongoDB \ BSON \ Regex ya que MongoRegex ya está descreatado. ¿Cómo puedo usar esto en el proyecto Symfony2? var_dump ($ regex); http://php.net/manual/en/mongodb-bson-regex.construct.php –

1

se puede seguir la Pregunta sobre el desbordamiento de pila para el detalle How to use Reserved characters in createQueryBuilder and MongoRegix,

Además, mientras que/^ a /,/^ a. /, y/^ a. $/match cadenas equivalentes, tienen diferentes características de rendimiento. Todas estas expresiones usan un índice si existe un índice apropiado; sin embargo,/^ a. /, y/^ a. $/son más lentos./^ a/puede detener el escaneo después de hacer coincidir el prefijo. Mongo Docs Regix

Cuestiones relacionadas