12

我正在尝试使用正则表达式在 Symfony 2 上使用 Doctrine 的 Mongodb ODM 查询 Mongodb。

我知道PHP mongo 驱动程序可以做到。但是,我不知道如何用 Doctrine 做到这一点。

我使用相同的课程吗?如何从 Symfony 中引用 MongoRegex?

4

2 回答 2

30

这是不久前在教义用户邮件列表中出现的。您可以\MongoRegex直接在 ODM 查询中使用该类:

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

或者,如果使用查询生成器:

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

请记住,前锚定、区分大小写的正则表达式模式将能够最有效地使用索引。这在Mongo 文档中有更详细的讨论。

于 2012-06-04T15:17:16.633 回答
1

您可以按照关于堆栈溢出的问题详细 了解如何在 createQueryBuilder 和 MongoRegix 中使用保留字符

此外,同时 /^a/, /^a. / 和 /^a。$/ 匹配等效字符串,它们具有不同的性能特征。如果存在适当的索引,则所有这些表达式都使用索引;但是,/^a. / 和 /^a。$/ 更慢。/^a/ 匹配前缀后可以停止扫描。 Mongo Docs Regix

于 2013-09-26T11:09:43.777 回答