(PECL mongo >=0.9.0)
MongoCollection::save — Guarda un documento en esta colección
Si el objeto fuera de la base de datos, se actualizaría. En caso contrario, se insertaría.
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.
"fsync"
Booleano, su valor predeterminado es FALSE
. Si la opción "journal" está habilitada, funciona exactamente como "j". Si no está habilitada, fuerza a la inserción que sea sincronizada con el disco antes de devolver que tuvo éxito. Si es TRUE
, está implicada una inserción reconocida y sobrescribirá el ajuste w a 0.
Nota:
Esta opción está obsoleta. Use la opción "j" en su lugar.
"j"
Booleano, su valor predeterminado es FALSE
. Fuerza a la inserción a ser sincronizada con el diario antes de devolver que ha tenido éxito. Si es TRUE
, implica una inserción reconocida y sobrescribirá el ajuste w a 0.
"w"
Véase WriteConcerns. El valor predeterminado de MongoClient es 1.
"wtimeout"
Cuánto esperar para el reconocimiento de WriteConcern. El valor predeterminado de MongoClient es 10000 milisegundos.
"safe"
Obsoleto. Use la opción w de WriteConcern.
"timeout"
Entero, valor predeterminado MongoCursor::$timeout. Si se usan las escrituras reconocidas, esto estable cuánto debe esperar el cliente (en milisegundos) a una respuesta de la base de datos. Si la base de datos no responde dentro de perído de espera, se lanzará una MongoCursorTimeoutException.
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á).
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.
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 . |
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" } }