PHP Portal » PHP Handbuch » MongoCollection::update

Werbung

MongoCollection::update


(PECL mongo >=0.9.0)

MongoCollection::updateUpdate records based on a given criteria

Beschreibung

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

Parameter-Liste

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.

Rückgabewerte

Returns if the update was successfully sent to the database.

Changelog

Version Beschreibung
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.

Beispiele

Beispiel #1 MongoCollection::update()

Adding an address field to a document.

PHP Code
1
2
3
4
$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")));

Das oben gezeigte Beispiel erzeugt eine ähnliche Ausgabe wie:

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

Beispiel #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 Code
1
2
3
$c->drop(); $c->update(array("uri" => "/summer_pics"), array('$inc' => array("page hits" => 1)), array("upsert" => true)); var_dump($c->findOne());

Das oben gezeigte Beispiel erzeugt eine ähnliche Ausgabe wie:

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

Beispiel #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 Code
1
2
$today = array('$gt' => new MongoDate(), '$lt' => new MongoDate(strtotime("+1 day"))); $people->update("birthday" => $today), array('$set' => array('gift' => $surprise), array("multiple" => true));