Я пытаюсь использовать регулярные выражения, чтобы запросить Mongodb с помощью Doom's Mongodb ODM на Symfony 2.
Я знаю, что драйвер PHP mongo может это сделать . Однако я не знаю, как это сделать с Доктриной.
Я использую тот же класс? Как я могу ссылаться на MongoRegex из Symfony?
Это появилось некоторое время назад в списке рассылки доктрины-пользователя . Вы можете использовать класс \MongoRegex
непосредственно в запросах ODM:
$documentRepository->findBy(array( 'foo' => new \MongoRegex('/^bar/'), ));
Или при использовании построителя запросов:
$queryBuilder->field('foo')->equals(new \MongoRegex('/^bar/'));
Имейте в виду, что шаблоны регулярных выражений с привязкой к фронту, основанные на регистре, смогут наиболее эффективно использовать индексы. Это более подробно обсуждается в монгольских документах .
вы можете следить за вопросом о переполнении стека для подробностей. Как использовать зарезервированные символы в createQueryBuilder и MongoRegix ,
Кроме того, в то время как / ^ а /, / ^ а. /, и / ^ а. $ / match эквивалентные строки, они имеют разные характеристики производительности. Все эти выражения используют индекс, если существует соответствующий индекс; однако, / ^ а. /, и / ^ а. $ / медленнее. / ^ a / может остановить сканирование после сопоставления префикса. Mongo Docs Regix