MongoCollection
PHP Manual

MongoCollection::update

(PECL mongo >=0.9.0)

MongoCollection::updateUpdate 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
PHP Manual