Doctrine MongoDB ODM在两个或多个字段中进行搜索


Doctrine MongoDB ODM search in two or more fields

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

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

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

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

但当我试图在更多的领域搜索时,我不知所措。

感谢您的帮助

实际上这很简单,我在发布这个问题 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')));

您需要使用$or运算符。我不确定在理论上是如何做到这一点的,但你正在外壳中寻找类似的东西:

db.people.find({ $or: [{surname: /^regex1/}, {surname: /^regex2/}] })