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
$new_object (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"
Can be a boolean or integer, defaults to FALSE. If FALSE, the
program continues executing without waiting for a database response.
If TRUE, the program will wait for the database response and throw a
MongoCursorException if the update did not
succeed.
If you are using replication and the master has changed, using "safe"
will make the driver disconnect from the master, throw and exception,
and attempt to find a new master on the next operation (your
application must decide whether or not to retry the operation on the
new master).
If you do not use "safe" with a replica set and
the master changes, there will be no way for the driver to know about
the change so it will continuously and silently fail to write.
If safe is an integer, will replicate the
update to that many machines before returning success (or throw an
exception if the replication times out, see wtimeout). This overrides
the w variable set on the collection.
"fsync"
Boolean, defaults to FALSE. Forces the update to be synced to
disk before returning success. If TRUE, a safe update is implied
and will override setting safe to FALSE.
"timeout"
Integer, defaults to MongoCursor::$timeout. If
"safe" is set, this sets how long (in milliseconds) for the client to
wait for a database response. If the database does not respond within
the timeout period, a MongoCursorTimeoutException
will be thrown.
Возвращаемые значения
If safe was set, returns an array containing the
status of the update. Otherwise, returns a boolean representing if the
array was not empty (an empty array will not be inserted). The fields in
this array are decribed in the documentation for
MongoCollection::insert().
Throws MongoCursorTimeoutException if the "safe"
option is set and the operation takes longer than
MongoCursor::$timeout milliseconds to complete. This does
not kill the operation on the server, it is a client-side timeout.
Список изменений
Версия
Описание
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.
1.0.9
Added ability to pass integers to "safe" options (only accepted booleans
before) and added "fsync" option.
1.0.9
The return type was changed to be an array containing error
information if the "safe" option is used, otherwise it is a boolean as
before.
1.0.11
Disconnects on "not master" errors if "safe" is set.
1.2.0
Added timeout option.
1.3.0
The options parameter does no longer accept
just a boolean to signify an upsert. Instead, this now has to be done
with array('upsert' => true).
If $new_object does not contain $-operators, an upsert will
create a new document from the passed fields only. This matches the
behavior of a normal update, where not using $-operators causes the whole
document to be overwritten.
Пример #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.