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 cómo reemplazar documentos en una colección de MongoDB. Una operación de reemplazo especifica los campos y valores para reemplazar un solo documento de tu colección.

Una operación de reemplazo sustituye a un documento de tu colección. La sustitución se produce entre un documento que tu filtro de query coincide y un documento de sustitución.

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

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

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

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

  • query especifica un filtro de query con los criterios para hacer coincidir un documento para reemplazar en la colección.

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

  • (Opcional) replaceOptions especifica opciones que puedes establecer para personalizar cómo el controlador ejecuta 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 de pintura. 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 debe actualizar su inventario nuevamente. Lo que pensaban que eran 20 botes de pintura rosa en realidad son 25 botes de pintura naranja.

Para actualizar el inventario, llama 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());

El resultado del código anterior se asemeja al siguiente:

Matched document count: 1
Modified document count: 1

Lo siguiente muestra el documento actualizado:

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

Si varios documentos coinciden con el filtro de query especificado en el método replaceOne(), se reemplaza el primer resultado. Puedes especificar un ordenamiento en una instancia de 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 cero documentos coinciden con el filtro de query en la operación de reemplazo, replaceOne() no realiza ningún cambio en los documentos de la colección. Consulta nuestra guía de inserción para aprender a insertar un documento nuevo en lugar de reemplazar uno si no hay coincidencias.

Importante

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