Docs Menu
Docs Home
/ /

Reemplazar Documentos

En esta guía, aprenderá a reemplazar documentos en una colección de MongoDB. Una operación de reemplazo especifica los campos y valores para reemplazar un solo documento de su colección.

Una operación de reemplazo sustituye un documento de su colección. La sustitución se produce entre un documento que coincide con el filtro de consulta y un documento de reemplazo.

El replaceOne() El método elimina todos los campos y valores existentes en el documento coincidente (excepto el _id campo) y lo sustituye por el documento de reemplazo.

Puede llamar al método replaceOne() en una instancia MongoCollection de la siguiente manera:

collection.replaceOne(<query>, <replacement>);

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

  • query Especifica un filtro de consulta con los criterios para encontrar un documento que se va a reemplazar en su colección.

  • replacement especifica los campos y valores de un nuevo objeto Document para reemplazar el documento coincidente.

  • (Opcional) replaceOptions Especifica opciones que se pueden configurar para personalizar cómo el controlador realiza la operación de reemplazo. Para obtener más información sobre este tipo, consulte la documentación de la API de "ReplaceOptions".

En este ejemplo, una tienda de pinturas vende cinco colores diferentes. La colección paint_inventory representa su inventario actual:

{ "_id": 1, "color": "red", "qty": 5 }
{ "_id": 2, "color": "purple", "qty": 8 }
{ "_id": 3, "color": "yellow", "qty": 0 }
{ "_id": 4, "color": "green", "qty": 6 }
{ "_id": 5, "color": "pink", "qty": 0 }

La tienda de pinturas se da cuenta de que deben actualizar su inventario. Lo que creían que eran 20 latas de pintura rosa, en realidad son 25 latas de pintura naranja.

Para actualizar el inventario, llame al método replaceOne() especificando lo siguiente:

  • Un filtro de query que coincide con documentos donde el color es "rosa".

  • Un documento de reemplazo donde el color es "naranja" y el qty es "25"

Bson filter = Filters.eq("color", "pink");
Document document = new Document("color", "orange").append("qty", 25);
// Replaces the first document that matches the filter with a new document
UpdateResult result = collection.replaceOne(filter, document);
// Prints the number of matched and modified documents
System.out.println("Matched document count: " + result.getMatchedCount());
System.out.println("Modified document count: " + result.getModifiedCount());

La salida del código anterior se parece a la siguiente:

Matched document count: 1
Modified document count: 1

A continuación se muestra el documento actualizado:

{ "_id": 5, "color": "orange", "qty": 25 }

Si varios documentos coinciden con el filtro de consulta especificado en el método replaceOne(), este reemplaza el primer resultado. Puede especificar una ordenación en una instancia ReplaceOptions para aplicar un orden a los documentos coincidentes antes de que el servidor realice la operación de reemplazo, como se muestra en el siguiente código:

ReplaceOptions options = ReplaceOptions.sort(ascending("qty"));
UpdateResult result = collection.replaceOne(filter, document, options);

Si ningún documento coincide con el filtro de consulta en la operación de reemplazo, replaceOne() no realiza cambios en los documentos de la colección. Consulte nuestra Guía de actualización para aprender a insertar un nuevo documento en lugar de reemplazar uno si no hay documentos coincidentes.

Importante

El replaceOne() método no puede realizar cambios en un documento que infrinjan las restricciones de índice único de la colección. Para obtener más información sobre las restricciones de índice único, consulte Índices únicos en el manual de MongoDB Server.

Volver

Inserción

En esta página