php7如何实现MongoDB模糊查询?MongoDB模糊查询语句相信对大家来说都不陌生,本文主要给大家介绍了在php 7中MongoDB实现模糊查询的方法,文中给出了详细的介绍和示例代码,对大家具有一定的参考学习价值。希望对大家有所帮助。

前言

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

db.collection.find({'_id': /^5101/})

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

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

命令行下:

db.letv_logs.find({"ctime":/uname?/i});

php操作

$query=array("name"=>new MongoRegex("/.*”.$name.".*/i"));

$db->find($query);

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

$query = new MongoDBDriverQuery('_id' => ['$regex' => '^5101']);

$this->getManager()->executeQuery($this->dbname . $this->collection, $query);

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

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

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

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

PHP Fatal error: Uncaught MongoDBDriverExceptionConnectionException: $in needs an array in filename

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

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

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

PHP Fatal error: Uncaught MongoDBDriverExceptionConnectionException: cannot nest $ under $in in filename

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

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

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

相关推荐:

mongodb模糊查询 php7_详解php7如何实现MongoDB模糊查询相关推荐

  1. mysql联合查询语句详解_实例讲解MySQL联合查询

    1. 内联结: Select A.Name, B.Hobby from A, B where A.id = B.id,这是隐式的内联结,查询的结果是: Name Hobby Tim Football ...

  2. go mongodb排序查询_Kotlin与MongoDB整合CURD案例详解

    1.mongodb的低版本bson无法转换类型 比如MongoDB数据库表的字段类型为Decimal,实体类用String去定义就会报如下错误 No converter found capablof ...

  3. mysql模糊查询实例_Mysql实例sql模糊查询实例详解

    <Mysql实例sql模糊查询实例详解>要点: 本文介绍了Mysql实例sql模糊查询实例详解,希望对您有用.如果有疑问,可以联系我们. 导读:常用的模糊查询语句:select 字段 fr ...

  4. hibernate(七) hibernate中查询方式详解

    序言 之前对hibernate中的查询总是搞混淆,不明白里面具体有哪些东西.就是因为缺少总结.在看这篇文章之前,你应该知道的是数据库的一些查询操作,多表查询等,如果不明白,可以先去看一下 MySQL数 ...

  5. 069:ORM查询条件详解-isnull和regex

    ORM查询条件详解-isnull和regex: isnull: 根据值是否为空进行查找.示例代码如下: articles = Article.objects.filter(create_time__i ...

  6. MySQL日志文件之错误日志和慢查询日志详解

    今天天气又开始变得很热了,虽然很热很浮躁,但是不能不学习,我在北京向各位问好.今天给大家分享一点关于数据库日志方面的东西,因为日志不仅讨厌而且还很重要,在开发中时常免不了与它的亲密接触,就在前几天公司 ...

  7. 查看oracle监听服务状态,(总结)Oracle监听服务lsnrctl参数及查询状态详解

    lsnrctl命令常用参数详解: lsnrctl start 启动指定的监听器 stop 关闭指定的监听器 status 显示监听器的状态.status命令显示监听器是不是活动的,日志与跟踪文件的位置 ...

  8. 066:ORM查询条件详解-startswith和endswith:

    ORM查询条件详解-startswith和endswith: startswith: 判断某个字段的值是否是以某个值开始的.大小写敏感.示例代码如下: articles1 = Article.obje ...

  9. 067:【Django数据库】ORM查询条件详解-range

    [Django数据库]ORM查询条件详解-range range: 判断某个 field 的值是否在给定的区间中.示例代码如下: # views.py文件内容:from datetime import ...

最新文章

  1. Linux编译动态链接库
  2. python笔记视频_终于拿到!清华大佬Python视频+书+笔记汇总
  3. 苹果9是5g手机吗_苹果手机扩容对手机有影响吗
  4. maven-约定优于配置
  5. K8S部署工具:KubeOperator集群规划-手动模式
  6. Stream流中间操作方法
  7. 前端实现图片悬浮_悬浮图片之上效果实现
  8. java final 初始化_[转]java static final 初始化
  9. ctfshow-WEB-web12( 利用代码执行漏洞读取敏感文件)
  10. 高精度小数 mooc 翁恺c 语言
  11. mysql 告警 异常 处理_mysql异常解决方案 - Lock wait timeout exceeded异常
  12. oracle对象不在回收站中,Oracle PURGE子句清除回收站中的对象
  13. Java Lambda 表达式
  14. ImageNet下载资源(2017年)
  15. ubuntu常用软件
  16. 【转】福昕pdf套件注册码激活
  17. 我只想说“独孤求败”与“东方不败”是不同的!
  18. 什么叫Jour-fix
  19. mybatis学习4
  20. GBase 8a里通过rsync加速调度coor节点的扩容和替换效率

热门文章

  1. php怎么爬取亚马逊的数据,使用PHP从Amazon MWS API获取订单数据
  2. 队列和通知区别_消息队列,阻塞队列
  3. yum 仓库 本地和在线
  4. 什么是java前端绑定事件_java复习前端篇——JavaScript
  5. 我使用过的Linux命令之file - 检测并显示文件类型
  6. linux -- framebuff驱动总结
  7. 在线下线html页面,下线
  8. 冒泡排序出现的问题_停课不停学 | 有趣的算法——冒泡排序
  9. 方舟生存进化服务器修改代码,方舟生存进化服务器代码怎么使用
  10. 万年历java课程设计报告_java万年历课程设计报告2010