我正在尝试将$ regex和$ in结合起来进行简单搜索.
例如,我有这种用户查询:
$user_query = "for focus red";
Run Code Online (Sandbox Code Playgroud)
在我的每个文档的mongodb集合中,我有一个关键字字段.我想得到字段关键字所在的文档:
{
keywords :
[0] => ford,
[1] => focus,
[2] => red
}
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,用户犯了一个错误,并键入"for"而不是"ford".
我可以得到的结果$in,如果用户键入福特,但我不知道如何结合$regex和$in,我已经看过了MongoDB的doc和PHP蒙戈文档.
有我的快速片段:
$user_query = preg_replace("/[[:blank:]]+/"," ", $user_query);
$arr_query = explode(' ', $user_query);
if (count($arr_query) > 1) {
$tmp = array();
foreach ($arr_query as $q) {
$tmp[] = new MongoRegex( "/". $q ."/" );
}
$who['keywords'] = array('$in' => $tmp);
} else {
$who['keywords'] = new MongoRegex( "/". $user_query ."/" );
}
$db->collection->find( $who );
Run Code Online (Sandbox Code Playgroud)