使用“$或”条件无效

I am developing a search portal, so I need to find the searched text on more than one field.

I am trying to use the advanced query of MongoDB in PHP.

My code is:

$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);

It returns NULL every time, whereas MongoRegex is working fine, because when I use it to search on only one field it works.

$search is post as input text.

I found the answer on my own, actually this was a version problem. I was using 1.4.4, but after update to 1.7.4 it is working. On the mongo website I found that the "or" operator was included only from version 1.7.x onwards.

If you need to combine the regex with another operator, you need to use the $regex clause. That one is missing in your code example. Please read again about how to query with regulars expressions.

$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'];
}