MongoCollection::update
(PECL mongo >=0.9.0)
MongoCollection::update — Modifie les enregistrements
Description
$criteria
, array $new_object
[, array $options
= array()
] )Liste de paramètres
-
criteria
-
La description des objets à modifier.
-
new_object
-
L'objet avec lequel modifier les objets trouvés.
-
options
-
Ce paramètre est un tableau associatif sous la forme array("optionname" => <boolean>, ...). Les options actuellement supportées sont :
"w"
Voir WriteConcerns. La valeur par défaut pour MongoClient est 1.
-
"upsert"
Si aucun document ne correspond au critère
$criteria
, un nouveau document sera inséré.Si un nouveau document doit être inséré, et que
$new_object
contient des modificateurs atomiques (i.e. opérateurs $), alors ces opérateurs seront appliqués au paramètre$criteria
pour créer le nouveau document. Si$new_object
ne contient pas de modificateur atomique, il sera pris tel quel en tant que document inséré. Voir l'exemple ci-dessous pour plus d'informations. -
"multiple"
Tous les documents correspondants au $criteria seront mis à jour. MongoCollection::update() a le comportement opposé de MongoCollection::remove(): elle met à jour un document par défaut, pas tous les documents correspondants. Il est recommandé de toujours précisez si vous voulez mettre à jour un document ou plusieurs, la base de données pouvant changer son comportement par défaut dans le futur.
"fsync"
Booléen, par défaut vaut
FALSE
. Force la synchronisation de l'insertion avant de retourner le succès de l'opération. Si vautTRUE
, une insertion reconnue est implicite, et écrasera la configuration de w à 0."j"
Booléen, par défaut
FALSE
. Force l'insertion à être synchronisée avec le journal avant de retourner le succès de l'opération. Si vautTRUE
, la reconnaissance d'une insertion sera appliquée, et va écraser la configuration passant de w à 0."w"
Voir WriteConcerns. La valeur par défaut pour MongoClient est 1.
"wtimeout"
Durée d'attente pour la reconnaissance WriteConcern. La valeur par défaut pour MongoClient est 10000 millisecondes.
"safe"
Obsolète. Veuillez utiliser l'option w de WriteConcern w.
"timeout"
Entier, par défaut, vaut MongoCursor::$timeout. Si la reconnaissance des écritures est utilisée, ceci va définir (en millisecondes) la durée d'attente du client d'une réponse de la base de données. Si la base de données ne répond pas durant cette période, une exception de type MongoCursorTimeoutException sera émise.
Valeurs de retour
Retourne un tableau contenant le statit de la mise à jour si l'option
"w" est définie. Sinon, retourne TRUE
.
Les champs du tableau de statut sont décrits dans la documentation de la méthode MongoCollection::insert().
Erreurs / Exceptions
Lance une exception MongoCursorException si l'option "w" est définie et que l'écriture échoue.
Lance une exception MongoCursorTimeoutException si l'option "w" est définie à une valeur supérieure à un, et que l'opération prend plus de temps que MongoCursor::$timeout millisecondes à se terminer. Ceci ne tue pas l'opération sur le serveur, c'est un délai d'attente maximal côté client. La mesure pour MongoCollection::$wtimeout est le milliseconde.
Historique
Version | Description |
---|---|
1.3.0 |
Le paramètre options n'accepte plus
de booléen pour indiquer un upsert. A la place, ceci
doit être effectué via array('upsert' => true).
|
1.2.11 |
Lance une alerte de niveau E_DEPRECATED lorsque
le paramètre options est de type scalar.
|
1.2.0 | Ajout de l'option "timeout". |
1.0.11 | Se déconnecte lors d'erreurs "not master" si "safe" est utilisé. |
1.0.9 |
Ajout de la possibilité de passer des entiers à l'option "safe" (auparavant, seuls les booléens étaient acceptés). Ajout de l'option "fsync". Le type retourné a été modifié en un tableau contenant les informations de l'erreur si l'option "safe" est utilisé, sinon, ce sera un booléen comme auparavant. |
1.0.5 | Ajout de l'option "safe". |
1.0.1 |
Le paramètre options passe de booléen à un tableau.
En version Pre-1.0.1, le second paramètre était une valeur
booléenne optionnelle, spécifiant un upsert.
|
Exemples
Exemple #1 Exemple avec MongoCollection::update()
<?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")));
?>
<?php
$c->drop();
$c->update(
array("uri" => "/summer_pics"),
array('$inc' => array("page hits" => 1)),
array("upsert" => true)
);
var_dump($c->findOne());
?>
<?php
$c->drop();
$c->update(
array("name" => "joe"),
array("username" => "joe312", "createdAt" => new MongoDate()),
array("upsert" => true)
);
var_dump($c->findOne());
?>
<?php
$today = array('$gt' => new MongoDate(), '$lt' => new MongoDate(strtotime("+1 day")));
$people->update(
array("birthday" => $today),
array('$set' => array('gift' => $surprise)),
array("multiple" => true)
);
?>
Voir aussi
La documentation PHP sur les mises à jour et la » documentation core de MongoDB.