在php7中MongoDB實現(xiàn)模糊查詢的方法詳解
前言
在實際開發(fā)中, 有不少的場景需要使用到模糊查詢, MongoDB shell 模糊查詢很簡單:
db.collection.find({'_id': /^5101/})
上面這句就是查詢_id以'5101'開始的內(nèi)容。
在老的MogoDB中模糊查詢挺簡單的,這里簡單記錄下模糊查詢的操作方式:
命令行下:
db.letv_logs.find({"ctime":/uname?/i});
php操作
$query=array("name"=>new MongoRegex("/.*”.$name.".*/i"));
$db->find($query);
下面主要就講下新PHP驅(qū)動中怎么查詢:
$query = new \MongoDB\Driver\Query('_id' => ['$regex' => '^5101']);
$this->getManager()->executeQuery($this->dbname . $this->collection, $query);
上面就是新驅(qū)動中執(zhí)行模糊查詢, 說實話, 挺吐槽這個新驅(qū)動, 相比老的驅(qū)動, 這個函數(shù)名也太長了吧。。。都快超過swift的函數(shù)名了。而且老驅(qū)動上的不少功能都在新驅(qū)動上干掉了。雖然提供了一個mongodb php library的類庫來操作, 但是這個庫里面有60多個文件,有時候比我項目文件還要多,這是鬧哪樣。這我建議自己去封裝一個Driver類來使用。
上面吐槽吐的有點跑題了, 除了直接模糊查詢, 在和$in或$nin使用的時候, 需要特別注意下:
$filter = ['_id' => ['$in' => ['$regex' => '^5101']]];
如果你像上面那么寫filter的話, 執(zhí)行的時候?qū)伋鲆粋€致命錯誤:
PHP Fatal error: Uncaught MongoDB\Driver\Exception\ConnectionException: $in needs an array in filename
這里說$in里面需要提供一個數(shù)組, 那么我們把上面的$filter改下, 給它弄個數(shù)組過去:
$filter = ['_id' => ['$in' => [['$regex' => '^5101']]];
但是不幸的是, 還是無法成功的得到想要的結(jié)果:
PHP Fatal error: Uncaught MongoDB\Driver\Exception\ConnectionException: cannot nest $ under $in in filename
這里說$in中不能出現(xiàn)$, 那咋辦呢? 其實在$in或$nin中要使用模糊匹配, 需要使用\MongoDB\BSON\Regex類的實例:
$filter = ['_id' => ['$in' => [new \MongoDB\BSON\Regex('^5101','i')]]];
這次終于得到我們想要的結(jié)果了。
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。
相關(guān)文章
學(xué)習(xí)php設(shè)計模式 php實現(xiàn)模板方法模式
這篇文章主要介紹了php設(shè)計模式中的模板方法模式,使用php實現(xiàn)模板方法模式,感興趣的小伙伴們可以參考一下2015-12-12
PHP細(xì)數(shù)實現(xiàn)提高并發(fā)能力的方法
這篇文章主要介紹了PHP提高并發(fā)能力有哪些方案,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08
PHP+jQuery實現(xiàn)滾屏無刷新動態(tài)加載數(shù)據(jù)功能詳解
這篇文章主要介紹了PHP+jQuery實現(xiàn)滾屏無刷新動態(tài)加載數(shù)據(jù)功能,涉及php動態(tài)讀取數(shù)據(jù)庫及加載數(shù)據(jù)實現(xiàn)滾屏無刷新效果的具體操作技巧,需要的朋友可以參考下2017-05-05
php連接Access數(shù)據(jù)庫錯誤及解決方法
前二天把一個asp+access的網(wǎng)站改成php+access的,在連連數(shù)據(jù)庫時可真讓我狠狠的郁悶了一把,通過百度了大量的相關(guān)文章終于解決了2013-06-06
在Win2003(64位)中配置IIS6+PHP5.2.17+MySQL5.5的運行環(huán)境
這篇文章主要介紹了在Win2003(64位)中配置IIS6+PHP5.2.17+MySQL5.5的運行環(huán)境,需要的朋友可以參考下2016-04-04

