11

我想在 Doctrine Mongo ODM 中编写一个查询,通过正则表达式在两个或多个字段中进行搜索。在 SQL 中,它看起来像:

SELECT * FROM user WHERE name LIKE %search% OR surname LIKE %search%;

我可以为这样的一个字段编写查询:

$qb->field('surname')->equals(new \MongoRegex('/.*'.$this->search.'.*/i'));

但是当我尝试在更多领域进行搜索时,我不知所措。

谢谢你的帮助

4

2 回答 2

17

其实这很简单,我在发布这个问题 5 分钟后发现

$qb->addOr($qb->expr()->field('surname')->equals(new \MongoRegex('/.*'.$this->search.'.*/i')));
$qb->addOr($qb->expr()->field('name')->equals(new \MongoRegex('/.*'.$this->search.'.*/i')));
于 2012-01-10T10:14:22.207 回答
2

您需要使用 $or 运算符。我不确定这是如何在教义中完成的,但您正在外壳中寻找与此等效的内容:

db.people.find({ $or: [{surname: /^regex1/}, {surname: /^regex2/}] })
于 2012-01-09T18:36:42.970 回答