Domanda Come posso usare le espressioni regolari con Docodine Mongodb ODM?


Sto cercando di usare espressioni regolari per interrogare Mongodb usando l'ODM Mongodb di Doctrine su Symfony 2.

Conosco il PHP mongo driver può farlo. Tuttavia, non so come farlo con Doctrine.

Uso la stessa classe? Come faccio riferimento a MongoRegex da Symfony?


12
2018-06-04 06:52


origine


risposte:


Questo è venuto fuori qualche tempo fa sul dottrina utente mailing list. Puoi usare il \MongoRegex class direttamente nelle tue query ODM:

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

O se si utilizza un generatore di query:

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

Tieni presente che i pattern regex con ancoraggio al maiuscolo e al vertice saranno in grado di utilizzare gli indici nel modo più efficiente. Questo è discusso in maggior dettaglio nel Documenti Mongo.


28
2018-06-04 15:17



puoi seguire la domanda sullo stack overflow per i dettagli Come utilizzare i caratteri riservati in createQueryBuilder e MongoRegix,

Inoltre, mentre / ^ a /, / ^ a./, e / ^ a.$ / corrisponde a stringhe equivalenti, hanno caratteristiche di rendimento diverse. Tutte queste espressioni utilizzano un indice se esiste un indice appropriato; tuttavia, / ^ a./, e / ^ a.$ / sono più lenti. / ^ a / può interrompere la scansione dopo aver trovato il prefisso. Mongo Docs Regix


1
2017-09-26 11:09