MongoCollection
PHP Manual

MongoCollection::save

(PECL mongo >=0.9.0)

MongoCollection::saveSauve un objet dans une collection

Description

public mixed MongoCollection::save ( array $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

Le tableau à sauver.

options

Options pour la sauvegarde.

  • "safe"

    Booléen ou entier, FALSE par défaut. Si FALSE, le programme continue son exécution sans attendre de réponse de la base. Si TRUE, le programme attendra la réponse de la base et enverra une MongoCursorException si l'insertion a échoué.

    Si vous utilisez la réplication et que le maitre a changé, utiliser "safe" fera que le pilote se déconnectera du maitre, enverra une exception, et tentera de trouver un nouveau maitre à l'opération suivante (votre application doit décider si oui ou non l'opération devra être rééssayée sur le nouveau maitre).

    Si vous n'utilisez pas "safe" avec une paire de réplication et que le maitre change, il n'y aura aucun moyen pour le pilote d'avoir connaissance de ce changement et il continuera des écritures en échec.

    Si safe est un entier, la réplication aura lieu avant de retourner avec succès (ou enverra une exception si la réplication n'a pas fonctionné, voyez wtimeout). Ceci écrase la variable w de la collection.

  • "fsync"

    Booléen, par défaut FALSE. Force l'insertion à être écrite sur disque avant de retourner avec succès. Si TRUE, une insertion sécurisée est effectuée et écrasera le paramètre safe si à FALSE.

  • "timeout"

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

Valeurs de retour

Si safe 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 MongoCursorException si l'option "safe" est définie et que la sauvegarde échoue.

Lance une MongoCursorTimeoutException si l'option "safe" est définie et que l'opération prend plus de temps que MongoCollection::$wtimeout millisecondes. Ceci ne tue pas le processus serveur, mais uniquement le délai d'attente côté client.

Historique

Version Description
1.0.5 Ajout du paramètre "options".
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.11 Se déconnecte lors d'erreurs "not master" si "safe" est utilisé.
1.2.0 Ajout de l'option timeout.

Exemples

Exemple #1 Exemple avec MongoCollection::save()

<?php

$obj 
= array('x' => 1);

// insertion de $obj dans la base
$collection->save($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);

?>

MongoCollection
PHP Manual