查閱全網(wǎng)和官方文檔幾乎都是這種形式:
db.user.find(name:/漢字/);
db.user.find(name:/^漢字/);
db.user.find(name:/漢字/i);
親測(cè)在PHP中都不管用
實(shí)際在PHP中不應(yīng)該帶著前后的反斜杠,主要起作用的是$options中的參數(shù),設(shè)置為imx即可實(shí)現(xiàn)模糊查詢的效果
關(guān)于$options的選項(xiàng)說(shuō)明
- i 忽略大小寫
- m 多行匹配模式
- x 忽略非轉(zhuǎn)義的空白字符
- s 單行匹配模式
- i,m,x,s可以組合使用
PHP中有效寫法:
$query['name'] = ['$regex' => "$name",'$options'=>'imx'];
PHP中無(wú)效寫法匯總:
$query['name'] = ['$regex' => "/$name/",'$options'=>'imx'];
$query['name'] = ['$regex' => "/^$name/"];
$query['name'] = ['$regex' => "/$name/i"];
一個(gè)完整查詢示例:
$query['name'] = ['$regex' => "$name",'$options'=>'imx'];
$query['is_show'] = ['$eq' => 1];
$options = [
//geo聚合查詢
[
'$geoNear' => [
'near' => ['type' => 'Point', 'coordinates' => [(double)$lng, (double)$lat]],
'distanceField' => 'distance',
'spherical' => true,
'distanceMultiplier' => 0.001,
'query' => $query
],
],
//分頁(yè),頁(yè)碼處理
[
'$skip' => (int)$page,
],
//限制返回?cái)?shù)據(jù)條數(shù)
[
'$limit' => (int)$pageSize
],
];
return $this->mongo->aggregate($options)->toArray();