mongodb模糊查询 php7_详解php7如何实现MongoDB模糊查询
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模糊查询相关推荐
- mysql联合查询语句详解_实例讲解MySQL联合查询
1. 内联结: Select A.Name, B.Hobby from A, B where A.id = B.id,这是隐式的内联结,查询的结果是: Name Hobby Tim Football ...
- go mongodb排序查询_Kotlin与MongoDB整合CURD案例详解
1.mongodb的低版本bson无法转换类型 比如MongoDB数据库表的字段类型为Decimal,实体类用String去定义就会报如下错误 No converter found capablof ...
- mysql模糊查询实例_Mysql实例sql模糊查询实例详解
<Mysql实例sql模糊查询实例详解>要点: 本文介绍了Mysql实例sql模糊查询实例详解,希望对您有用.如果有疑问,可以联系我们. 导读:常用的模糊查询语句:select 字段 fr ...
- hibernate(七) hibernate中查询方式详解
序言 之前对hibernate中的查询总是搞混淆,不明白里面具体有哪些东西.就是因为缺少总结.在看这篇文章之前,你应该知道的是数据库的一些查询操作,多表查询等,如果不明白,可以先去看一下 MySQL数 ...
- 069:ORM查询条件详解-isnull和regex
ORM查询条件详解-isnull和regex: isnull: 根据值是否为空进行查找.示例代码如下: articles = Article.objects.filter(create_time__i ...
- MySQL日志文件之错误日志和慢查询日志详解
今天天气又开始变得很热了,虽然很热很浮躁,但是不能不学习,我在北京向各位问好.今天给大家分享一点关于数据库日志方面的东西,因为日志不仅讨厌而且还很重要,在开发中时常免不了与它的亲密接触,就在前几天公司 ...
- 查看oracle监听服务状态,(总结)Oracle监听服务lsnrctl参数及查询状态详解
lsnrctl命令常用参数详解: lsnrctl start 启动指定的监听器 stop 关闭指定的监听器 status 显示监听器的状态.status命令显示监听器是不是活动的,日志与跟踪文件的位置 ...
- 066:ORM查询条件详解-startswith和endswith:
ORM查询条件详解-startswith和endswith: startswith: 判断某个字段的值是否是以某个值开始的.大小写敏感.示例代码如下: articles1 = Article.obje ...
- 067:【Django数据库】ORM查询条件详解-range
[Django数据库]ORM查询条件详解-range range: 判断某个 field 的值是否在给定的区间中.示例代码如下: # views.py文件内容:from datetime import ...
最新文章
- Linux编译动态链接库
- python笔记视频_终于拿到!清华大佬Python视频+书+笔记汇总
- 苹果9是5g手机吗_苹果手机扩容对手机有影响吗
- maven-约定优于配置
- K8S部署工具:KubeOperator集群规划-手动模式
- Stream流中间操作方法
- 前端实现图片悬浮_悬浮图片之上效果实现
- java final 初始化_[转]java static final 初始化
- ctfshow-WEB-web12( 利用代码执行漏洞读取敏感文件)
- 高精度小数 mooc 翁恺c 语言
- mysql 告警 异常 处理_mysql异常解决方案 - Lock wait timeout exceeded异常
- oracle对象不在回收站中,Oracle PURGE子句清除回收站中的对象
- Java Lambda 表达式
- ImageNet下载资源(2017年)
- ubuntu常用软件
- 【转】福昕pdf套件注册码激活
- 我只想说“独孤求败”与“东方不败”是不同的!
- 什么叫Jour-fix
- mybatis学习4
- GBase 8a里通过rsync加速调度coor节点的扩容和替换效率
热门文章
- php怎么爬取亚马逊的数据,使用PHP从Amazon MWS API获取订单数据
- 队列和通知区别_消息队列,阻塞队列
- yum 仓库 本地和在线
- 什么是java前端绑定事件_java复习前端篇——JavaScript
- 我使用过的Linux命令之file - 检测并显示文件类型
- linux -- framebuff驱动总结
- 在线下线html页面,下线
- 冒泡排序出现的问题_停课不停学 | 有趣的算法——冒泡排序
- 方舟生存进化服务器修改代码,方舟生存进化服务器代码怎么使用
- 万年历java课程设计报告_java万年历课程设计报告2010