MongoCollection
PHP Manual

MongoCollection::save

(PECL mongo >=0.9.0)

MongoCollection::saveGuarda un documento en esta colección

Descripción

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

Si el objeto fuera de la base de datos, se actualizaría. En caso contrario, se insertaría.

Parámetros

a

Array u objeto a guardar. Si se usa un objeto, este no puede tener propiedades protegidas o privadas.

Nota:

Si el parámetro no posee una clave _id o propiedad, se creará una nueva instancia de MongoId y se le asignará. Véase MongoCollection::insert() para información adicional sobre este comportamiento.

options

Opciones para el guardado.

  • "w"

    Véase WriteConcerns. El valor predeterminado de MongoClient es 1.

  • "fsync"

    Booleano, su valor predeterminado es FALSE. Fuerza a la inserción a estar sincronizada con el disco antes de devolver éxito. Si es TRUE, está implicada una inserción declarada y sobrescribirá el ajuste w a 0.

  • "timeout"

    Entero, su valor predeterminado es MongoCursor::$timeout. Si se establece a "safe", establece cuánto espera el cliente (en milisegundos) a un respuesta de la base de datos. Si la base de datos no responde dentro del periodo del tiempo de espera, será lanzada una MongoCursorTimeoutException.

  • "safe"

    Obsoleto. Use la opción w de WriteConcern.

Valores devueltos

Si w estuviera habilitado, devolvería un array que contiene el estado de la escritura. En cualquier otro caso, devuelve un booleano que representa si el array no estaba vacío (un array vacío no se insertará).

Errores/Excepciones

Lanza una excepción de tipo MongoException si el documento insertado está vacío o si contiene claves de longitud cero. Intentar insertar un objeto con propiedades protegidas o privadas causará un error de clave de longitud cero.

Lanza una MongoCursorException si la opción "w" está establecida y la escritura falla.

Lanza una MongoCursorTimeoutException si la opción "w" está establecida a un valor mayor que uno y la operación toma más de MongoCursor::$timeout milisegundos en completarse. Esto no pondrá fin a la operación en el servidor, es un tiempo de espera del lado del cliente. La operación en MongoCollection::$wtimeout es milisegundos.

Historial de cambios

Versión Descripción
1.2.0 Añadida la opción "timeout".
1.0.11 Se desconecta en errores "not master" si "safe" está establecido.
1.0.9

Añadida la capacidad de pasar enteros a la opción "safe", la cual anteriormente únicamente aceptaba booleanos.

Añadida la opción "fsync".

1.0.5 Añadido el parámetro options.

Ejemplos

Ejemplo #1 Ejemplo de MongoCollection::save()

<?php

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

// insertar $obj en la base de datos
$collection->save($obj);
var_dump($obj);

// añadir otro campo
$obj['foo'] = 'bar';

// $obj no puede insertarse de nuevo; provoca un error de _id duplicado
$collection->insert($obj);

// la función save actualiza $obj con el nuevo campo
$collection->save($obj);

?>

El resultado del ejemplo sería algo similar a:

array(2) {
  ["x"]=>
  int(1)
  ["_id"]=>
  object(MongoId)#4 (1) {
    ["$id"]=>
    string(24) "50b6afe544415ed606000000"
  }
}

MongoCollection
PHP Manual