加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

在php7中MongoDB实现模糊查询的方法详解

发布时间:2020-12-12 22:07:13 所属栏目:PHP教程 来源:网络整理
导读:前言 在实际开发中,有不少的场景需要使用到模糊查询,MongoDB shell 模糊查询很简单: 上面这句就是查询_id以'5101'开始的内容。 在老的MogoDB中模糊查询挺简单的,这里简单记录下模糊查询的操作方式: 命令行下: php操作 new MongoRegex("/.*”.$name.".*/i"

前言

在实际开发中,有不少的场景需要使用到模糊查询,MongoDB shell 模糊查询很简单:

上面这句就是查询_id以'5101'开始的内容。

在老的MogoDB中模糊查询挺简单的,这里简单记录下模糊查询的操作方式:

命令行下:

php操作

new MongoRegex("/.*”.$name.".*/i")); $db->find($query);

下面主要就讲下新PHP驱动中怎么查询:

['$regex' => '^5101']); $this->getManager()->executeQuery($this->dbname . $this->collection,$query);

上面就是新驱动中执行模糊查询,说实话,挺吐槽这个新驱动,相比老的驱动,这个函数名也太长了吧。。。都快超过swift的函数名了。而且老驱动上的不少功能都在新驱动上干掉了。虽然提供了一个mongodb php library的类库来操作,但是这个库里面有60多个文件,有时候比我项目文件还要多,这是闹哪样。这我建议自己去封装一个Driver类来使用。

上面吐槽吐的有点跑题了,除了直接模糊查询,在和$in$nin使用的时候,需要特别注意下:

['$in' => ['$regex' => '^5101']]];

如果你像上面那么写filter的话,执行的时候将抛出一个致命错误:

这里说$in里面需要提供一个数组,那么我们把上面的$filter改下,给它弄个数组过去:

['$in' => [['$regex' => '^5101']]];

但是不幸的是,还是无法成功的得到想要的结果:

这里说$in中不能出现$,那咋办呢? 其实在$in$nin中要使用模糊匹配,需要使用MongoDBBSONRegex类的实例:

['$in' => [new MongoDBBSONRegex('^5101','i')]]];

这次终于得到我们想要的结果了。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对编程之家的支持。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读