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

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

Я знаю, что драйвер PHP Mongo может это сделать. Однако я не знаю, как это сделать с Doctrine.

Я использую тот же класс? Как я могу ссылаться на MongoRegex из Symfony?


person chaostheory    schedule 04.06.2012    source источник
comment
Для тех, кто не хочет использовать MongoRegex, поскольку он устарел, может попробовать это решение. MongoRegex устарел в соответствии с php.net/manual/en/class.mongoregex.php stackoverflow.com/questions/36761669/ Вот почему я дал этот ответ для тех, кто может беспокоиться об этом.   -  person Anuja Patil    schedule 13.07.2016


Ответы (2)


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

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

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

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

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

person jmikola    schedule 04.06.2012
comment
Мне нужно использовать новый класс MongoDB\BSON\Regex, так как MongoRegex теперь устарел. Как я могу использовать это в проекте Symfony2. var_dump ($ регулярное выражение); php.net/manual/en/mongodb-bson-regex.construct. php - person Anuja Patil; 20.04.2016

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

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

person Shahbaz    schedule 26.09.2013