MongoCollection::save
(PECL mongo >=0.9.0)
MongoCollection::save — Sauvegarde un document dans une collection
Description
Si l'objet est déjà dans la base, modifie la base et sinon, insère l'objet.
Liste de paramètres
-
a
-
Un tableau ou un objet à sauvegarder. Si un objet est utilisé, ces propriétés ne doivent pas être protégées, ni privées.
Note:
Si le paramètre n'a pas de clé _id, ni de propriété, une nouvelle instance MongoId sera créée et utilisée. Voir la méthode MongoCollection::insert() pour plus d'informations quant à ce comportement.
-
options
-
Options pour la sauvegarde.
"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
Si w
est utilisé, retourne un tableau contenant le statut de la sauvegarde.
Sinon, retourne un booléen si le tableau était non vide (un tableau vide ne sera pas inséré).
Erreurs / Exceptions
Lance une exception MongoException si le document inséré est vide, ou s'il contient des clés de valeurs nulles. Tenter d'insérer un objet avec des propriétés protégées ou privées causera une erreur de type "clés de valeurs nulles".
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.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 |
Possibilité de passer des entiers pour l'option "safe" (n'acceptait que des booléen avant). Ajout de l'option "fsync". |
1.0.5 |
Ajout du paramètre options .
|
Exemples
Exemple #1 Exemple avec MongoCollection::save()
<?php
$obj = array('x' => 1);
// insertion de $obj dans la base
$collection->save($obj);
var_dump($obj);
// ajout d'un nouveau champ
$obj['foo'] = 'bar';
// $obj ne peut pas être inséré, car il causerait une duplication
$collection->insert($obj);
// sauvegarde de la modification de $obj
$collection->save($obj);
?>
L'exemple ci-dessus va afficher quelque chose de similaire à :
array(2) { ["x"]=> int(1) ["_id"]=> object(MongoId)#4 (1) { ["$id"]=> string(24) "50b6afe544415ed606000000" } }