时间:2021-05-25
前言
在实际开发中, 有不少的场景需要使用到模糊查询, 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')]]];这次终于得到我们想要的结果了。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文讲述了php7安装mongoDB扩展的方法。分享给大家供大家参考,具体如下:这里我们使用pecl命令来安装首先来到php7的安装目录$/usr/local/
本文实例讲述了PHP7标量类型declare用法。分享给大家供大家参考,具体如下:php7为了提高执行效率,在函数方法中增加了标量类型(布尔、浮点、整型、字符)
本文实例讲述了PHP7扩展开发之helloword实现方法。分享给大家供大家参考,具体如下:这里是以PHP7作为基础,讲解如何从零开始创建一个PHP扩展。本文主
本文实例讲述了PHP7安装Redis扩展的方法。分享给大家供大家参考,具体如下:linux中PHP7安装Redis扩展1.依次执行wget-chttps://g
以下是小编给大家整理的关于PHP7的相关更新内容和知识点。新功能PHP7增加了许多特性,其中最重要的特性如下所述•性能改进——在PHP7中合并了PH