我正在尝试使用正则表达式在 Symfony 2 上使用 Doctrine 的 Mongodb ODM 查询 Mongodb。
我知道PHP mongo 驱动程序可以做到。但是,我不知道如何用 Doctrine 做到这一点。
我使用相同的课程吗?如何从 Symfony 中引用 MongoRegex?
我正在尝试使用正则表达式在 Symfony 2 上使用 Doctrine 的 Mongodb ODM 查询 Mongodb。
我知道PHP mongo 驱动程序可以做到。但是,我不知道如何用 Doctrine 做到这一点。
我使用相同的课程吗?如何从 Symfony 中引用 MongoRegex?
这是不久前在教义用户邮件列表中出现的。您可以\MongoRegex
直接在 ODM 查询中使用该类:
$documentRepository->findBy(array(
'foo' => new \MongoRegex('/^bar/'),
));
或者,如果使用查询生成器:
$queryBuilder->field('foo')->equals(new \MongoRegex('/^bar/'));
请记住,前锚定、区分大小写的正则表达式模式将能够最有效地使用索引。这在Mongo 文档中有更详细的讨论。
您可以按照关于堆栈溢出的问题详细 了解如何在 createQueryBuilder 和 MongoRegix 中使用保留字符,
此外,同时 /^a/, /^a. / 和 /^a。$/ 匹配等效字符串,它们具有不同的性能特征。如果存在适当的索引,则所有这些表达式都使用索引;但是,/^a. / 和 /^a。$/ 更慢。/^a/ 匹配前缀后可以停止扫描。 Mongo Docs Regix