Php 使用「$或;情况不妙

Php 使用「$或;情况不妙,php,mongodb,Php,Mongodb,我正在开发一个搜索门户,所以我需要在多个字段中查找搜索到的文本 我试图在PHP中使用MongoDB的高级查询 我的代码是: $mongo = new MongoDBCONN(); $jobCollection = $mongo->select('jobs', $mongo); $advanceQuery=array('orgId' => '21') $query_q=array('$or'=>array( array("jobTitle"=>new Mongo

我正在开发一个搜索门户,所以我需要在多个字段中查找搜索到的文本

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

如果需要将regex与另一个运算符组合,则需要使用
$regex
子句。您的代码示例中缺少该示例。请再次阅读有关如何操作的内容。

我自己找到了答案,实际上这是一个版本问题。我使用的是1.4.4,但在更新到1.7.4之后,它就可以工作了。在mongo网站上,我发现“or”操作符仅在1.7.x版之后才被包含。

为什么要使用
array\u merge
?因为还有许多其他参数我也在尝试,基于一些条件,例如如果date也在搜索中,它将被添加到数组中进行搜索,这与我们在sql中所做的一样,如果(日期在搜索参数“$query=$query.”中可用,日期='24-10-2011'”;对于测试,我已经删除了其他条件,并尝试使用这个$query_q=array('orgId'=>'21','$或'=>array(array(“jobTitle”=>new MongoRegex(/$search/i”)),array(“jobLocationCity”=>new MongoRegex(“/$search/i”)),array('jobLocationCountry'=>new MongoRegex(“/$search/i”));但是仍然结果=0首先,对于您的响应,我现在只使用了这么多$mongo=new MongoDBCONN();$jobCollection=$mongo->select('jobs',$mongo)$query\u q=array('orgId'=>'21','$或'=>array(array(“jobTitle”=>'Senior Front End Engineer')),array(“jobLocationCity”=>'Gurgaon'),);$jobCollection->find($query\u q);但结果相同
$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'];
}