Definición
Parámetros
$filter: matriz|objeto- El criterio de filtro que especifica los documentos a actualizar.
$update: matriz|objeto- Especifica las combinaciones de campos y valores que se actualizarán y cualquier operador de actualización relevante.
$updateutiliza MongoDB Operadores de actualización. También puede pasar una canalización de agregación como parámetro. $options: matrizUna matriz que especifica las opciones deseadas.
NombreTipoDescripciónbypassDocumentValidation
booleano
Si es
true, permite que la operación de escritura evite la validación a nivel de documento. El valor predeterminado esfalse.filtrosDeArreglo
arreglo
Un arreglo de documentos de filtro que determina qué elementos del arreglo modificar para una operación de actualización en un campo de arreglo.
Nuevo en la versión 1.3.
intercalación
matriz|objeto
Laintercalación permite a los usuarios especificar reglas específicas del idioma para la comparación de cadenas, como el uso de mayúsculas y minúsculas y tildes. Al especificar la intercalación, el
localecampo es obligatorio; todos los demás campos son opcionales. Para obtener descripciones de los campos, consulte el documento de intercalación.Si no se especifica la intercalación, pero la colección tiene una predeterminada, la operación utiliza la intercalación especificada para la colección. Si no se especifica ninguna intercalación para la colección ni para la operación, MongoDB utiliza la comparación binaria simple utilizada en versiones anteriores para las comparaciones de cadenas.
comment
mixto
Permite a los usuarios especificar un comentario arbitrario para ayudar a rastrear la operación a través del generador de perfiles de base de datos, la salidacurrentOp y los registros.
Esta opción está disponible desde MongoDB 4.4 y generará una excepción en el momento de ejecución si se especifica para una versión de servidor anterior.
Novedades en la versión 1.13.
hint
cadena|matriz|objeto
El índice a utilizar. Especifique el nombre del índice como una cadena o el patrón de clave del índice como un documento. Si se especifica, el sistema de consultas solo considerará los planes que utilicen el índice sugerido.
Esta opción está disponible desde MongoDB 4.4 y generará una excepción en el momento de ejecución si se especifica para una versión de servidor anterior.
Nuevo en la versión 1.7.
maxTimeMS
entero
El límite de tiempo acumulado en milisegundos para procesar operaciones en el cursor. MongoDB cancela la operación en el punto de interrupción posterior más cercano.
permitir
matriz|objeto
Mapa de nombres y valores de parámetros. Los valores deben ser constantes o expresiones cerradas que no hagan referencia a campos del documento. Se puede acceder a los parámetros como variables en un contexto de expresión agregada (p. ej.,
$$var).Esto no es compatible con versiones de servidor anteriores a 5.0 y generará una excepción en el momento de ejecución si se utiliza.
Novedades en la versión 1.13.
proyección
matriz|objeto
La especificación de proyección para determinar qué campos se incluirán en los documentos devueltos.Consulte Campos de proyecto que se devolverán desde la consulta y Operadores de proyección en el manual de MongoDB.
devolverDocumento
entero
Especifica si se debe devolver el documento antes de que se aplique la actualización o después.
returnDocumentadmite los siguientes valores:MongoDB\Operation\FindOneAndUpdate::RETURN_DOCUMENT_BEFORE( por defecto)MongoDB\Operation\FindOneAndUpdate::RETURN_DOCUMENT_AFTER
sesión
Sesión de cliente para asociar a la operación.
Nuevo en la versión 1.3.
sort
matriz|objeto
La especificación del orden para la clasificación de los resultados.
typeMap
arreglo
El mapa de tipos que se aplica a los cursores y que determina cómo se convierten los documentos BSON a valores PHP. El valor predeterminado es el mapa de tipos de la colección.
Esto se utilizará para el documento de resultados devuelto.
inserción
booleano
Si se establece en
true, se crea un nuevo documento cuando ningún documento coincide con los criterios de consulta. El valor predeterminado esfalse, que no inserta un nuevo documento si no se encuentra ninguna coincidencia.writeConcern
Escriba la preocupación que se usará para la operación. El valor predeterminado es la preocupación de escritura de la colección.
No es posible especificar una preocupación de escritura para operaciones individuales como parte de una transacción. En su lugar, configure la
writeConcernopción al iniciar la transacción.
Return Values
Una matriz u objeto para el documento original o actualizado, según el valor especificado en la opción returnDocument. De forma predeterminada, se devuelve el documento original. Si ningún documento coincide con la consulta, se devuelve null. El tipo de retorno dependerá de la opción typeMap.
Errores/Excepciones
MongoDB\Exception\UnexpectedValueException si la respuesta del comando del servidor era incorrecta.
MongoDB\Exception\UnsupportedException si se utilizan opciones que no son compatibles con el servidor seleccionado (porcollation readConcernwriteConcernejemplo,,,).
MongoDB\Exception\InvalidArgumentException para errores relacionados con el análisis de parámetros u opciones.
MongoDB\Driver\Exception\RuntimeException para otros errores en el nivel de extensión (por ejemplo, errores de conexión).
Comportamiento
Al evaluar los criterios de búsqueda, MongoDB compara tipos y valores según sus propias reglas de comparación para tipos BSON, que difieren de las reglas de comparación y manejo de tipos de PHP. Cuando se coincida con un tipo BSON especial, los criterios de consulta deben utilizar la Clase BSON respectiva en la extensión (por ejemplo, usa MongoDB\BSON\ObjectId para hacer coincidir con un ObjectId.
Ejemplos
La siguiente operación actualiza el restaurante con restaurant_id de "40361708" en la colección restaurants en la base de datos test estableciendo su número de edificio en "761":
$collection = (new MongoDB\Client)->test->restaurants; $updatedRestaurant = $collection->findOneAndUpdate( [ 'restaurant_id' => '40361708' ], [ '$set' => [ 'address.building' => '761' ]], [ 'projection' => [ 'address' => 1 ], 'returnDocument' => MongoDB\Operation\FindOneAndUpdate::RETURN_DOCUMENT_AFTER, ] ); var_dump($updatedRestaurant);
El resultado sería entonces similar a lo siguiente:
object(MongoDB\Model\BSONDocument)#20 (1) { ["storage":"ArrayObject":private]=> array(2) { ["_id"]=> object(MongoDB\BSON\ObjectId)#12 (1) { ["oid"]=> string(24) "594d5ef280a846852a4b3dee" } ["address"]=> object(MongoDB\Model\BSONDocument)#19 (1) { ["storage":"ArrayObject":private]=> array(4) { ["building"]=> string(3) "761" ["coord"]=> object(MongoDB\Model\BSONArray)#18 (1) { ["storage":"ArrayObject":private]=> array(2) { [0]=> float(-73.9925306) [1]=> float(40.7309346) } } ["street"]=> string(8) "Broadway" ["zipcode"]=> string(5) "10003" } } } }
Ver también
Referencia de comando findAndModify en el manual de MongoDB