在php7中MongoDB实现模糊查询的方法详解
发布时间 - 2026-01-11 00:56:35 点击率:次前言

在实际开发中, 有不少的场景需要使用到模糊查询, 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 \MongoDB\Driver\Query('_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 MongoDB\Driver\Exception\ConnectionException: $in needs an array in filename
这里说$in里面需要提供一个数组, 那么我们把上面的$filter改下, 给它弄个数组过去:
$filter = ['_id' => ['$in' => [['$regex' => '^5101']]];
但是不幸的是, 还是无法成功的得到想要的结果:
PHP Fatal error: Uncaught MongoDB\Driver\Exception\ConnectionException: cannot nest $ under $in in filename
这里说$in中不能出现$, 那咋办呢? 其实在$in或$nin中要使用模糊匹配, 需要使用\MongoDB\BSON\Regex类的实例:
$filter = ['_id' => ['$in' => [new \MongoDB\BSON\Regex('^5101','i')]]];
这次终于得到我们想要的结果了。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。
# php
# mongodb
# 模糊查询
# php7
# 查询
# Java操作MongoDB模糊查询和分页查询
# Java操作mongodb的模糊查询和精确查询
# Node.js对MongoDB数据库实现模糊查询的方法
# Python操作mongodb数据库进行模糊查询操作示例
# Java操作MongoDB插入数据进行模糊查询与in查询功能
# Golang Mongodb模糊查询的使用示例
# MongoDB模糊查询操作案例详解(类关系型数据库的 like 和 not like)
# MongoDB多条件模糊查询示例代码
# 的是
# 这是
# 如果你
# 都在
# 多个
# 比我
# 很简单
# 掉了
# 要多
# 这篇文章
# 都快
# 谢谢大家
# 也太
# 提供一个
# 长了
# 这句
# 给它
# 抛出
# 命令行
# 中要
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel如何设置自定义的日志文件名_Laravel根据日期或用户ID生成动态日志【技巧】
Win11摄像头无法使用怎么办_Win11相机隐私权限开启教程【详解】
PythonWeb开发入门教程_Flask快速构建Web应用
UC浏览器如何设置启动页 UC浏览器启动页设置方法
历史网站制作软件,华为如何找回被删除的网站?
Laravel如何使用Service Provider注册服务_Laravel服务提供者配置与加载
国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?
laravel服务容器和依赖注入怎么理解_laravel服务容器与依赖注入解析
手机怎么制作网站教程步骤,手机怎么做自己的网页链接?
北京网站制作公司哪家好一点,北京租房网站有哪些?
谷歌浏览器如何更改浏览器主题 Google Chrome主题设置教程
如何挑选最适合建站的高性能VPS主机?
Zeus浏览器网页版官网入口 宙斯浏览器官网在线通道
北京网站制作费用多少,建立一个公司网站的费用.有哪些部分,分别要多少钱?
如何快速搭建高效WAP手机网站吸引移动用户?
制作公司内部网站有哪些,内网如何建网站?
如何用花生壳三步快速搭建专属网站?
如何在万网自助建站平台快速创建网站?
javascript中的try catch异常捕获机制用法分析
Edge浏览器提示“由你的组织管理”怎么解决_去除浏览器托管提示【修复】
Laravel Pest测试框架怎么用_从PHPUnit转向Pest的Laravel测试教程
Laravel如何使用Passport实现OAuth2?(完整配置步骤)
米侠浏览器网页背景异常怎么办 米侠显示修复
PHP 实现电台节目表的智能时间匹配与今日/明日轮播逻辑
无锡营销型网站制作公司,无锡网选车牌流程?
如何登录建站主机?访问步骤全解析
Laravel中Service Container是做什么的_Laravel服务容器与依赖注入核心概念解析
如何在 Telegram Web View(iOS)中防止键盘遮挡底部输入框
Laravel如何配置和使用队列处理异步任务_Laravel队列驱动与任务分发实例
javascript基于原型链的继承及call和apply函数用法分析
Laravel storage目录权限问题_Laravel文件写入权限设置
哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?
Laravel怎么处理异常_Laravel自定义异常处理与错误页面教程
Win10如何卸载预装Edge扩展_Win10卸载Edge扩展教程【方法】
Linux后台任务运行方法_nohup与&使用技巧【技巧】
如何在腾讯云服务器上快速搭建个人网站?
为什么php本地部署后css不生效_静态资源加载失败修复技巧【技巧】
品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?
如何在沈阳梯子盘古建站优化SEO排名与功能模块?
Laravel如何构建RESTful API_Laravel标准化API接口开发指南
如何在阿里云高效完成企业建站全流程?
头像制作网站在线观看,除了站酷,还有哪些比较好的设计网站?
如何快速打造个性化非模板自助建站?
如何在阿里云购买域名并搭建网站?
Laravel如何实现URL美化Slug功能_Laravel使用eloquent-sluggable生成别名【方法】
Laravel广播系统如何实现实时通信_Laravel Reverb与WebSockets实战教程
javascript日期怎么处理_如何格式化输出
Laravel N+1查询问题如何解决_Eloquent预加载(Eager Loading)优化数据库查询
如何在腾讯云免费申请建站?
Laravel DB事务怎么使用_Laravel数据库事务回滚操作

