我正在开发一个搜索门户网站,因此我需要在多个字段中找到搜索到的文本。
我正在尝试在PHP中使用MongoDB的高级查询。
我的代码是:
$mongo = new MongoDBCONN();
$jobCollection = $mongo->select('jobs', $mongo);
$advanceQuery=array('orgId' => '21')
$query_q=array('$or'=>array(
array("jobTitle"=>new MongoRegex("/$search/i")),
array("jobLocationCity"=>new MongoRegex("/$search/i")),
array('jobLocationCountry'=>new MongoRegex("/$search/i"))
));
$advanceQuery=array_merge($advanceQuery,$query_q);
$jobCollection->find($advanceQuery);
每次都返回NULL,而MongoRegex工作正常,因为当我用它来搜索一个字段时它就可以工作。
$ search作为输入文本发布。
答案 0 :(得分:1)
我自己找到了答案,实际上这是一个版本问题。我使用的是1.4.4,但在更新到1.7.4之后它正在运行。在mongo网站上,我发现“或”运算符仅包含在1.7.x版本之后。
答案 1 :(得分:1)
$regexObj = new MongoRegex("/$search_term/i");
$where = array(
'$or' => array(
array("Name" => $regexObj),
array("image.caption.text" => $regexObj),
array("image.user.username" => $regexObj)
)
);
$cursor = $collection->find($where);
// Parsing the results
while ($cursor->hasNext())
{
$obj = $cursor->getNext();
$profile_image = $obj['image']['user']['profile_picture'];
}
答案 2 :(得分:0)
如果需要将正则表达式与另一个运算符组合,则需要使用$regex
子句。您的代码示例中缺少那个。请再次阅读有关query with regulars expressions的方法。