MongoCollection::__toString
MongoCollection::validate
MongoCollection
PHP Manual

# MongoCollection::update

(PECL mongo >=0.9.0)

MongoCollection::update — Update records based on a given criteria

### Descrição

public boolean MongoCollection::update ( array `$criteria` , array `$newobj` [, array `$options` = array() ] )

### Parâmetros

`criteria`

  Description of the objects to update.

`newobj`

  The object with which to update the matching records.

`options`

  This parameter is an associative array of the form array("optionname" => <boolean>, ...). Currently supported options are:

  - "upsert"

    If no document matches $criteria, a new document will be created from $criteria and $newobj (see upsert example below).

  - "multiple"

    All documents matching $criteria will be updated. MongoCollection::update() has exactly the opposite behavior of MongoCollection::remove(): it updates one document by default, not all matching documents. It is recommended that you always specify whether you want to update multiple documents or a single document, as the database may change its default behavior at some point in the future.

  - "safe"

    Check that the update succeeded.

### Valor Retornado

Returns if the update was successfully sent to the database.

### Erros

Throws MongoCursorException if the "safe" option is set and the update fails.

### Histórico

Versão | Descrição
--- | ---
1.0.1 | Changed "options" parameter from boolean to array. Pre-1.0.1, the second parameter was an optional boolean value specifying an upsert.
1.0.5 | Added "safe" option.

### Exemplos

Exemplo #1 MongoCollection::update()

Adding an address field to a document.

`<?php
$c->insert(array("firstname" => "Bob", "lastname" => "Jones" ));
$newdata = array('$set' => array("address" => "1 Smith Lane"));
$c->update(array("firstname" => "Bob"), $newdata);
var_dump($c->findOne(array("firstname" => "Bob")));
?>`

O exemplo acima irá imprimir algo similar a:

    array(4) {
      ["_id"]=>
      object(MongoId)#6 (0) {
      }
      ["firstname"]=>
      string(3) "Bob"
      ["lastname"]=>
      string(5) "Jones"
      ["address"]=>
      string(12) "1 Smith Lane"
    }

Exemplo #2 MongoCollection::update() upsert example

Upserts can simplify code, as a single line can create the object if it does not exist yet and update it if it does.

`<?php
$c->drop();
$c->update(array("uri" => "/summer_pics"), array('$inc' => array("page hits" => 1)), array("upsert" => true));
var_dump($c->findOne());
?>`

O exemplo acima irá imprimir algo similar a:

    array(3) {
      ["_id"]=>
      object(MongoId)#9 (0) {
      }
      ["uri"]=>
      string(12) "/summer_pics"
      ["page hits"]=>
      int(1)
    }

Exemplo #3 MongoCollection::update() multiple example

By default, MongoCollection::update() will only update the first document matching $criteria that it finds. Using the "multiple" option can override this behavior, if needed.

This example adds a "gift" field to every person whose birthday is in the next day.

`<?php
$today = array('$gt' => new MongoDate(), '$lt' => new MongoDate(strtotime("+1 day")));
$people->update("birthday" => $today), array('$set' => array('gift' => $surprise), array("multiple" => true));
?>`

### Veja Também

MongoDB core docs on » update.

MongoCollection::__toString
MongoCollection::validate
MongoCollection
PHP Manual