使用“$或”条件无效

时间:2011-09-28 10:34:46

标签: php mongodb

我正在开发一个搜索门户网站,因此我需要在多个字段中找到搜索到的文本。

我正在尝试在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作为输入文本发布。

3 个答案:

答案 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的方法。