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

时间:2012-01-09 15:58:41

标签: php mongodb doctrine-odm odm

我想在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'));

但是当我尝试在更多领域进行搜索时,我感到很茫然。

感谢您的帮助

2 个答案:

答案 0 :(得分: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')));

答案 1 :(得分:2)

您需要使用$或运算符。我不确定这是如何在学说中完成的,但是你在shell中寻找相同的东西:

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