Definición
Parámetros
$filter: arreglo|objeto- Los criterios de filtro que especifican los documentos que se deben reemplazar.
$replacement: arreglo|objeto- El documento de reemplazo.
$options: arregloUna 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.códec
MongoDB\Codec\DocumentCodec
La Codificar datos con códecs de tipo para codificar o decodificar documentos. Esta opción es mutuamente excluyente con la
typeMapopción.El valor predeterminado es el códec de la colección. La herencia de la opción predeterminada
codecprevalece sobre la de la opcióntypeMap.Novedad en la versión 1.17.
intercalación
arreglo|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 la intercalación no está especificada pero la colección tiene una intercalación predeterminada, la operación utiliza la intercalación especificada para la colección. Si no se especifica una intercalación para la colección o para la operación, MongoDB utiliza la comparación binaria simple utilizada en versiones anteriores para comparar 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, si se especifica para una versión de servidor anterior, dará lugar a una excepción en tiempo de ejecución.
Novedades en la versión 1.13.
hint
cadena|arreglo|objeto
El índice a utilizar. Especifique el nombre del índice como una string o el patrón clave del índice como un documento. Si se especifica, el sistema de query solo considerará los planes que utilicen el índice sugerido.
Esta opción está disponible desde MongoDB 4.4 y, si se especifica para una versión de servidor anterior, dará lugar a una excepción en tiempo de ejecución.
Novedades en la versión 1.7.
permitir
arreglo|objeto
Mapa de nombres de parámetros y valores. Los valores deben ser expresiones constantes o cerradas que no hagan referencia a los campos del documento. Posteriormente, se puede acceder a los parámetros como variables en el contexto de una expresión de agregación (por ejemplo,
$$var).Esto no es compatible con versiones de servidor anteriores a 5.0 y, si se utiliza, generará una excepción en el momento de ejecución.
Novedades en la versión 1.13.
maxTimeMS
entero
El límite de tiempo acumulado en milisegundos para las operaciones de procesamiento en el cursor. MongoDB aborta la operación en el siguiente punto de interrupción..
proyección
arreglo|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.
returnDocument
entero
Especifica si debe devolverse el documento antes de aplicar la sustitución o después.
returnDocumentadmite los siguientes valores:MongoDB\Operation\FindOneAndReplace::RETURN_DOCUMENT_BEFORE(por defecto)MongoDB\Operation\FindOneAndReplace::RETURN_DOCUMENT_AFTER
sesión
Sesión de cliente para asociar a la operación.
Nueva en la versión 1.3.
sort
arreglo|objeto
La especificación del orden para la clasificación de los resultados.
typeMap
arreglo
El mapa de tipos para aplicar a cursores, que determina cómo se convierten los documentos BSON en valores PHP. Por defecto, se utiliza el mapa de tipos de la colección.
Esto se utilizará para el documento de resultados devuelto.
inserción
booleano
Si se configura en
true, crea un nuevo documento cuando ningún documento coincide con los criterios de la query. El valor por defecto esfalse, que no inserta un nuevo documento cuando no se encuentra coincidencia.writeConcern
nivel de confirmación de escritura (write concern) a usar en la operación. Por defecto, se aplica el nivel de confirmación de escritura (write concern) 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
Un objeto arreglo para el documento original o el reemplazado, dependiendo del valor especificado de la opción returnDocument. Por defecto, se devuelve el documento original. Si ningún documento coincide con la query, 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 por 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
Considera el siguiente documento en la colección restaurants de la base de datos test:
{ "_id" : ObjectId("576023c7b02fa9281da4139e"), "address" : { "building" : "977", "coord" : [ -74.06940569999999, 40.6188443 ], "street" : "Bay Street", "zipcode" : "10305" }, "borough" : "Staten Island", "cuisine" : "French", "grades" : [ { "date" : ISODate("2014-08-15T00:00:00Z"), "grade" : "A", "score" : 7 }, { "date" : ISODate("2014-02-13T00:00:00Z"), "grade" : "A", "score" : 5 }, { "date" : ISODate("2013-06-07T00:00:00Z"), "grade" : "A", "score" : 11 } ], "name" : "Zest", "restaurant_id" : "41220906" }
La siguiente operación reemplaza el documento restaurant_id de "41220906" con un nuevo documento:
$collection = (new MongoDB\Client)->teset->restaurants; $replacedRestaurant = $collection->findOneAndReplace( [ 'restaurant_id' => '41220906' ], [ 'Borough' => 'Staten Island', 'cuisine' => 'Italian', 'grades' => [], 'name' => 'Staten Island Pastaria', 'restaurant_id' => '999999999', ], [ 'returnDocument' => MongoDB\Operation\FindOneAndReplace::RETURN_DOCUMENT_AFTER ] ); var_dump($replacedRestaurant);
La vista de salida se ilustraría como sigue:
object(MongoDB\Model\BSONDocument)#18 (1) { ["storage":"ArrayObject":private]=> array(6) { ["_id"]=> object(MongoDB\BSON\ObjectId)#11 (1) { ["oid"]=> string(24) "594d5ef380a846852a4b5837" } ["Borough"]=> string(13) "Staten Island" ["cuisine"]=> string(7) "Italian" ["grades"]=> object(MongoDB\Model\BSONArray)#17 (1) { ["storage":"ArrayObject":private]=> array(0) { } } ["name"]=> string(22) "Staten Island Pastaria" ["restaurant_id"]=> string(9) "999999999" } }
Ver también
Referencia de comando findAndModify en el manual de MongoDB