MongoCollection
PHP Manual

MongoCollection::save

(PECL mongo >=0.9.0)

MongoCollection::saveSauvegarde un document dans une collection

Description

public mixed MongoCollection::save ( array|object $a [, array $options = array() ] )

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.

  • "w"

    Voir WriteConcerns. La valeur par défaut pour MongoClient est 1.

  • "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 vaut TRUE, une insertion reconnue est implicite, et écrasera la configuration de w à 0.

  • "timeout"

    Entier, par défaut, vaut MongoCursor::$timeout. Si "safe" est défini, ce sera le temps d'attente du client d'une réponse de la base de données (en millisecondes). Si la base de données ne répond pas dans ce délai, une exception MongoCursorTimeoutException sera émise.

  • "safe"

    Obsolète. Veuillez utiliser l'option w de WriteConcern w.

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"
  }
}

MongoCollection
PHP Manual