Para agentes de IA: hay un índice de documentación disponible en https://www.mongodb.com/es/docs/llms.txt — versiones en markdown de todas las páginas están disponibles agregando .md a cualquier ruta URL.
Docs Menu

Reemplazar Documentos

En esta guía, puedes aprender a usar el driver de Java Reactive Streams para reemplazar un documento en una colección de MongoDB mediante la realización de una operación de reemplazo.

Una operación de reemplazo sustituye un documento en una colección de MongoDB por nuevos campos y valores que tú especifiques. Puedes realizar una operación de reemplazo utilizando el método replaceOne().

Los ejemplos en esta guía utilizan la colección sample_restaurants.restaurants de los conjuntos de datos de muestra de Atlas.

Para aprender a crear un clúster gratuito de MongoDB Atlas y cargar los conjuntos de datos de muestra, consulte el tutorial Primeros pasos .

Importante

Proyecto Reactor librería

Esta guía usa la librería Proyecto Reactor para consumir instancias Publisher devueltas por los métodos del driver Reactive Streams de Java. Para obtener más información sobre la biblioteca Project Reactor y cómo utilizarla, consulta Primeros pasos en la documentación de Reactor. Para obtener más información sobre cómo utilizamos los métodos de la librería Project Reactor en esta guía, consulta la guía Guardar datos en MongoDB.

Puedes realizar una operación de reemplazo usando el método replaceOne() en una instancia MongoCollection. Este método remueve todos los campos excepto el campo _id del primer documento que coincide con los criterios de búsqueda, y luego se añaden los campos y valores especificados al documento vacío.

El método replaceOne() requiere los siguientes parámetros:

  • Documento de filtro de query, que determina qué documentos se deben reemplazar. Para obtener más información sobre los filtros de query, consulta la guía Especificar una Query.

  • Reemplaza el documento, que especifica los campos y valores que se deben insertar en el nuevo documento.

Para reemplazar un documento individual en una colección de MongoDB, llama al método replaceOne() y pasa el documento del filtro de query y el documento de reemplazo como parámetros. Luego, pasa el resultado replaceOne() al método estático Mono.from() de Mono. Mono es una clase de la biblioteca Project Reactor. En Java Reactive Streams, los métodos del driver devuelven instancias Publisher frías, lo que significa que la operación correspondiente no ocurre a menos que te suscribas a la instancia de Publisher retornada. Esta guía utiliza la biblioteca Project Reactor para consumirlos. Para aprender más sobre Mono, consulta Mono en la documentación de Project Reactor.

El siguiente ejemplo usa el método replaceOne() para reemplazar los campos y valores de un documento con un valor de campo name de "Pizza Town". El método replaceOne() reemplaza el documento original por un documento con un valor de campo name de "Mongo's Pizza" y un valor de campo cuisine de "Pizza".

Publisher<UpdateResult> replacePublisher = restaurants.replaceOne(
eq("name", "Pizza Town"),
new Document().append("name", "Mongo's Pizza")
.append("cuisine", "Pizza"));
Mono.from(replacePublisher).block();

Opcionalmente, puede modificar el comportamiento del método replaceOne() llamando a un método de opciones. La clase ReplaceOptions proporciona métodos que modifican el comportamiento del método replaceOne(). Para utilizar la clase ReplaceOptions, construya una nueva instancia de la clase y luego llame a uno o más de sus métodos para modificar la operación de reemplazo. Puedes encadenar estas llamadas a métodos. Para modificar el comportamiento de la operación de reemplazo, pasa la instancia de la clase y las llamadas de métodos encadenadas como el último argumento al método replaceOne().

Puede utilizar los siguientes métodos en la clase ReplaceOptions para modificar el método replaceOne().

Método
Descripción

bypassDocumentValidation(Boolean bypass)

Especifica si la operación de reemplazo omite la validación del documento. Esto permite actualizar documentos que no cumplen con los requisitos de validación del esquema, si los hubiera. Para obtener más información sobre la validación del esquema, consulte la sección «Validación de esquema» en el manual del servidor MongoDB.

collation(Collation collation)

Especifica el tipo de intercalación de lenguaje a usar al ordenar los resultados. Para obtener más información, consulte intercalación en el manual de MongoDB Server.

comment(BsonValue comment)

Adjunta un comentario BsonValue a la operación. Para obtener más información, consulta la guía de campos del comando de inserción en el manual de MongoDB Server.

comment(String comment)

Adjunta un comentario String a la operación. Para obtener más información, consulta la guía de campos del comando de inserción en el manual de MongoDB Server.

hint(Bson hint)

Establece el índice para la operación como un valor Bson. Para obtener más información, consulta la instrucción hint en el manual del servidor MongoDB.

hintString(String hint)

Establece el índice para la operación como un valor String. Para obtener más información, consulta la instrucción hint en el manual del servidor MongoDB.

let(Bson variables)

Especifica un mapa de nombres de parámetros y valores. Los valores deben ser constantes o expresiones cerradas que no hagan referencia a los campos del document. Para obtener más información, consulte la instrucción let en el manual de MongoDB Server.

sort(Bson sort)

Establece los criterios de ordenación que se aplicarán a la operación. Si varios documentos coinciden con el filtro de consulta que se pasa al método replaceOne(), la operación reemplaza el primer resultado. Puede configurar esta opción para aplicar un orden a los documentos coincidentes y así tener mayor control sobre qué documento se reemplaza.

upsert(Boolean upsert)

Especifica si la operación de reemplazo realiza una inserción si ningún documento coincide con el filtro de query. Para más información, consulta la inserción instrucción en el manual de MongoDB Server.

El siguiente código utiliza el método replaceOne() para reemplazar un documento en la colección restaurants. También configura la opción upsert(true) para que el driver inserte un nuevo documento si el filtro de query no coincide con ningún documento existente.

Publisher<UpdateResult> replacePublisher = restaurants.replaceOne(
eq("name", "Food Town"),
new Document().append("name", "Food World")
.append("cuisine", "Mixed"),
new ReplaceOptions().upsert(true));
Mono.from(replacePublisher).block();

El método replaceOne() devuelve un objeto UpdateResult. Utiliza los siguientes métodos del tipo UpdateResult para acceder a la información correspondiente:

Propiedad
Descripción

getMatchedCount()

El número de documentos que coincidieron con el filtro de la consulta, independientemente de cuántos fueron reemplazados.

getModifiedCount()

Número de documentos modificados mediante la operación de reemplazo. Si un documento reemplazado es idéntico al original, no se incluye en este recuento.

getUpsertedId()

El ID del document que se insertó en la base de datos, si el controlador realizó una actualización o inserción (upsert). Si no se insertó ningún document, este valor es null.

wasAcknowledged()

Acuse de recibo del reemplazo.

Para ver ejemplos de código ejecutables sobre cómo reemplazar documentos con el controlador Java Reactive Streams, consulte la guía de operaciones CRUD.

Para aprender más sobre cualquiera de los métodos o tipos analizados en esta guía, consulta la siguiente documentación de API: