Подтвердить что ты не робот

Как я могу использовать регулярные выражения с Doctrine Mongodb ODM?

Я пытаюсь использовать регулярные выражения для запроса Mongodb с использованием Doctrine Mongodb ODM на Symfony 2.

Я знаю, что PHP mongo может сделать это. Однако я не знаю, как это сделать с помощью Doctrine.

Использовать ли я один класс? Как я могу ссылаться на MongoRegex из Symfony?

4b9b3361

Ответ 1

Это появилось некоторое время назад в doctrine-user рассылке. Класс \MongoRegex можно использовать непосредственно в запросах ODM:

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

Или если используется построитель запросов:

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

Имейте в виду, что шаблоны регулярных выражений с привязкой к фронту, наиболее чувствительные к регистру, смогут наиболее эффективно использовать индексы. Это более подробно обсуждается в Mongo docs.

Ответ 2

вы можете следить за вопросом о переполнении стека для подробностей Как использовать зарезервированные символы в createQueryBuilder и MongoRegix,

Кроме того, в то время как /^ a/,/^a./и/^a.$/соответствуют эквивалентным строкам, они имеют разные характеристики производительности. Все эти выражения используют индекс, если существует соответствующий индекс; однако,/^a./и/^a.$/медленнее./^ a/может остановить сканирование после сопоставления префикса. Mongo Docs Regix