2016-08-31 1 views
0

Ich bin mit diesemWie bekomme ich den Status der MongDB Update/Delete Operation in PHP?

function delete($col,$condition = array()){ 
    $bulk = new MongoDB\Driver\BulkWrite; 
    $bulk->delete($condition, ['limit' => 1]); 

    $manager = new MongoDB\Driver\Manager($this->mongo); 
    $writeConcern = new MongoDB\Driver\WriteConcern(MongoDB\Driver\WriteConcern::MAJORITY, 1000); 
    $result = $manager->executeBulkWrite($this->db.'.'.$col, $bulk, $writeConcern); 
    var_dump($result); 

} 

Und der Code funktioniert und Ausgang immer wie unten

Objekt (MongoDB \ Driver \ Write) 30 # (9) {[ "nInserted"] => int (0) ["nMatched"] => int (0) ["nModifiziert"] => int (0) ["nRemoved"] => int (0) ["nUpserted"] => int (0) ["upsertedIds "] => array (0) {} [" writeErrors "] => array (0) {} [" writeConcernError "] => NULL [" writeConcern "] => array (4) {[" w "] => string (8) "Mehrheit" ["wmajority"] => bool (wahr) ["wtimeout"] => int (1000) ["Journal"] => NULL}}

Jetzt kann ich das Objekt nicht in Array konvertieren. Wie bekomme ich die Eigenschaften wie "nRemoved"/"nUpdated" vom Objekt?

Antwort

0

Sie können es wie folgt tun:

$bulk = new MongoDB\Driver\BulkWrite(['ordered' => false]); 
$bulk->update(
    $condition, 
    $data, 
    $n_opts 
); 
if($result = $this->mongo->executeBulkWrite($this->db.'.'.$collection, $bulk)){ 
    if(($result->getMatchedCount() > 0 AND $result->getModifiedCount() > 0) OR ($result->getMatchedCount() == 0 AND $result->getUpsertedCount() > 0)){ 
     return true; 
    }else{ 
     return false; 
    } 
}else{ 
    return false; 
} 

zurückzukehren Löschungen zählen:

$ result-> getDeletedCount();

Mehr Informationen zu diesen Methoden hier: http://php.net/manual/en/class.mongodb-driver-writeresult.php

+0

Vielen Dank! Das hat gut funktioniert. –

Verwandte Themen