Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
Click here >
Docs Menu
Docs Home
/ /

MongoDB\Collection::findOneAndReplace()

MongoDB\Collection::findOneAndReplace()

Encuentra un único documento que coincida con la query y lo reemplaza.

function findOneAndReplace(
array|object $filter,
array|object $replacement,
array $options = []
): object|null
$filter : arreglo|objeto
Los criterios de filtro que especifican los documentos que se deben reemplazar.
$replacement : arreglo|objeto
El documento de reemplazo.
$options : arreglo

Un arreglo que especifica las opciones deseadas.

Nombre
Tipo
Descripción

bypassDocumentValidation

booleano

Si true, permite que la operación de guardar eluda la validación a nivel de documento. Por defecto es false.

códec

MongoDB\Codec\DocumentCodec

La Codifica datos con códecs de tipo para usar en la codificación o decodificación de documentos. Esta opción es mutuamente excluyente con la opción typeMap.

Se configura de forma predeterminada al códec de la colección. La herencia para una opción codec por defecto tiene prioridad sobre la de la opción typeMap.

Novedad en la versión 1.17.

intercalación

arreglo|objeto

Intercalación permite a los usuarios especificar reglas específicas del lenguaje para la comparación de cadenas, tales como reglas para mayúsculas y tildes. Al especificar la intercalación, el campo locale es obligatorio; todos los demás campos de intercalación son opcionales. Para obtener descripciones de los campos, consulte 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 perfilador de bases de datos, la salida actualOp() y 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.

Novedad 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 está soportado para versiones del servidor anteriores a la 5.0 y resultará en una excepción en el momento de la ejecución si se usa.

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. Consulta Campos de proyecto a devolver de 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. returnDocument admite 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 con 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 resultado 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 es false, 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 un nivel de confirmación de escritura (write concern) para operaciones individuales como parte de una transacción. En su lugar, configura la opción writeConcern al iniciar la transacción.

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.

MongoDB\Exception\UnexpectedValueException si la respuesta del comando del servidor era incorrecta.

MongoDB\Exception\UnsupportedException si se usan opciones que no sean compatibles con el servidor seleccionado (p. ej. collation, readConcern, writeConcern).

MongoDB\Exception\InvalidArgumentException por errores relacionados con el análisis de parámetros u opciones.

MongoDB\Driver\Exception\RuntimeException para otros errores a nivel de extensión (por ejemplo, " errores de conexión).

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.

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 con restaurant_id de "41220906" con un nuevo documento:

<?php
$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"
}
}

Volver

findOneAndDelete()

En esta página