无法使用以下代码

时间:2015-11-16 19:08:08

标签: php mongodb nosql

我使用以下代码更新mongo文档。但是当我使用$inc来递增计数器时,它无效。如果没有使用inc,它的效果很好。

$arrWhere   =    array('epa_id' => $objData->request->memo->epa_id);
$arrSet     =    array(
                        'pa_response'=>$objData,
                        'response_status'=>'N',
                        'modified_datetime'=>  getServerTimeStamp(),
                        array('$inc'=>array('revision_id'=>1)),
                        );

$arrResult  = $objPriorAuth->updatePA($arrWhere, $arrSet);

public function updatePA($arrWhere,$arrSet)
{
    global $medDB;

    $strCollection  =   EPA_MASTER;
    $dbCollection   =   $medDB->$strCollection;

    $arrReturn  =   array();
    //dump($arrSet);
    try
    {
        $dbCollection->update(
                                $arrWhere,
                                array('$set' =>$arrSet),
                                array('multiple' => true)
                             );
        dump($medDB->lastError());
    }
    catch(MongoCursorException $mce)
    {
        $arrReturn['error']  =  $mce->getMessage(); 
        logError($mce->getMessage(),DB_ERROR_LOG_FILE_PATH);
    }

    return $arrReturn;
}

1 个答案:

答案 0 :(得分:0)

语法错误,您无法在inc内使用set。试试下面的代码:

更改选项:

$arrSet = array(
    'pa_response'=>$objData,
    'response_status'=>'N',
    'modified_datetime'=>  getServerTimeStamp()
);
$arrInc = array('$inc'=>array('revision_id'=>1));

更改更新查询:

array('$set' => $arrSet, '$inc' => $arrInc);