Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /
/ / /

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 reemplaza un documento en una colección de MongoDB con los nuevos campos y valores que usted especifique. Puede realizar una operación de reemplazo usando replaceOne() .

Los ejemplos en esta guía utilizan la colección sample_restaurants.restaurants de la 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, consulta el Comenzar tutorial.

Importante

Proyecto Reactor librería

Esta guía utiliza la biblioteca Project Reactor para consumir Publisher las instancias devueltas por los métodos del controlador Java Reactive Streams. Para obtener más información sobre la biblioteca Project Reactor y cómo usarla, consulte la sección "Introducción" en la documentación de Reactor. Para obtener más información sobre cómo usamos los métodos de la biblioteca Project Reactor en esta guía, consulte la guía "Escribir datos en MongoDB".

Puede realizar una operación de reemplazo usando el método replaceOne() en una instancia MongoCollection. Este método elimina todos los campos excepto el campo _id del primer documento que coincide con los criterios de búsqueda y, a continuación, añade 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)

Specifies whether the replace operation bypasses document validation. This lets you update documents that don't meet the schema validation requirements, if any exist. For more information about schema validation, see Schema Validation in the MongoDB Server manual.

collation(Collation collation)

Specifies the kind of language collation to use when sorting results. For more information, see Collation in the MongoDB Server manual.

comment(BsonValue comment)

Attaches a BsonValue comment to the operation. For more information, see the insert command fields guide in the MongoDB Server manual.

comment(String comment)

Attaches a String comment to the operation. For more information, see the insert command fields guide in the MongoDB Server manual.

hint(Bson hint)

Sets the index for the operation as a Bson value. For more information, see the hint statement in the MongoDB Server manual.

hintString(String hint)

Sets the index for the operation as a String value. For more information, see the hint statement in the MongoDB Server manual.

let(Bson variables)

Specifies a map of parameter names and values. Values must be constant or closed expressions that don't reference document fields. For more information, see the let statement in the MongoDB Server manual.

sort(Bson sort)

Sets the sort criteria to apply to the operation. If multiple documents match the query filter that you pass to the replaceOne() method, the operation replaces the first result. You can set this option to apply an order to matched documents to have more control over which document is replaced.

upsert(Boolean upsert)

Specifies whether the replace operation performs an upsert operation if no documents match the query filter. For more information, see the upsert statement in the MongoDB Server manual.

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()

The number of documents that matched the query filter, regardless of how many were replaced.

getModifiedCount()

The number of documents modified by the replace operation. If a replaced document is identical to the original, it is not included in this count.

getUpsertedId()

The ID of the document that was inserted into the database, if the driver performed an upsert. If no document was inserted, this value is null.

wasAcknowledged()

An acknowledgement of the replacement.

Para obtener ejemplos de código ejecutable sobre cómo reemplazar documentos con el controlador Java Reactive Streams, consulte la guía Escribir datos en MongoDB.

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

Volver

Update

En esta página