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

发布于 2024-12-26 04:04:50 字数 352 浏览 2 评论 0原文

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

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

我可以为一个字段编写一个查询,如下所示:

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

但当我尝试搜索更多字段时,我不知所措。

感谢您的帮助

I would like to write a query in Doctrine Mongo ODM that searches by regex in two or more fields. In SQL it would look like:

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

I can write a query for one field like this:

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

but I'm at a loss when i try to search in more fields.

Thanks for any help

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

陈甜 2025-01-02 04:04:50

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

well actually it is quite simple, i found out 5 mins after posting this question

$qb->addOr($qb->expr()->field('surname')->equals(new \MongoRegex('/.*'.$this->search.'.*/i')));
$qb->addOr($qb->expr()->field('name')->equals(new \MongoRegex('/.*'.$this->search.'.*/i')));
╭⌒浅淡时光〆 2025-01-02 04:04:50

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

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

You need to use the $or operator. I'm not sure how this is done in doctrine but you are looking for the equivalent of this in the shell:

db.people.find({ $or: [{surname: /^regex1/}, {surname: /^regex2/}] })
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文