Overview
En esta guía, puede aprender a especificar actualizaciones mediante constructores en el controlador Java.
El Updates El constructor proporciona métodos auxiliares para simplificar las siguientes tareas:
Actualizaciones de campo: actualizar o eliminar el valor de un campo en particular
Actualizaciones de arreglo: actualizando valores en un campo valorizado por un arreglo
Combinando operadores de actualizar múltiples: realizar varias actualizaciones a la vez, como establecer o cambiar más de un campo
Algunos métodos que esperan documentos actualizados son:
updateOne()updateMany()bulkWrite()
La Updates clase proporciona métodos de fábrica estáticos para todos los operadores de actualización de MongoDB. Cada método devuelve una instancia del tipo BSON, que se puede pasar a cualquier método que espere un argumento de actualización.
Tip
Para abreviar, puede optar por importar los métodos de las Actualizaciones clase estáticamente:
import static com.mongodb.client.model.Updates.*;
Los siguientes ejemplos asumen esta importación estática.
Los ejemplos de esta guía utilizan el siguiente documento:
{ "_id": 1, "color": "red", "qty": 5, "vendor": [ "A", "D", "M" ], "lastModified": { "$date": "2021-03-05T05:00:00Z" } }
Actualizaciones de campo
Configura
Utilice el método set() para asignar el valor de un campo en una operación de actualización.
El siguiente ejemplo establece el valor del campo qty en "11":
Bson filter = eq("_id", 1); Bson update = set("qty", 11); collection.updateOne(filter, update);
El ejemplo anterior actualiza el documento original al siguiente estado:
{ "_id": 1, "color": "red", "qty": 11, "vendor": [ "A", "D", "M" ], "lastModified": { "$date": "2021-03-05T05:00:00Z" } }
El siguiente ejemplo agrega dos nuevos campos al documento original:
Bson filter = eq("_id", 1); Bson update = combine(set("width", 6.5), set("height", 10)); collection.updateOne(filter, update);
El ejemplo anterior actualiza el documento original al siguiente estado:
{ "_id": 1, "color": "red", "qty": 5, "vendor": [ "A", "D", "M" ], "lastModified": { "$date": "2021-03-05T05:00:00Z" }, "width": 6.5, "height": 10, }
Sin establecer
Utilice el método unset() para eliminar el valor de un campo en una operación de actualización.
El siguiente ejemplo elimina el campo qty:
Bson filter = eq("_id", 1); Bson update = unset("qty"); collection.updateOne(filter, update);
El ejemplo anterior actualiza el documento original al siguiente estado:
{ "_id": 1, "color": "red", "vendor": [ "A", "D", "M" ], "lastModified": { "$date": "2021-03-05T05:00:00Z" } }
Establecer en inserción
Utilice el método setOnInsert() para asignar el valor de un campo en una operación de actualización en una inserción de un documento.
El siguiente ejemplo establece el valor del campo qty en "5" si una operación upsert resultó en la inserción de un documento:
Bson filter = eq("_id", 1); Bson update = setOnInsert("qty", 7); collection.updateOne(filter, update, new UpdateOptions().upsert(true));
El ejemplo anterior actualiza el documento original al siguiente estado:
{ "_id": 1, "color": "red", "qty": 5, "vendor": [ "A", "D", "M" ], "lastModified": { "$date": "2021-03-05T05:00:00Z" } }
Nota
Si no se inserta el documento no se producirá ningún cambio.
Incremento
Utilice el método inc() para incrementar el valor de un campo numérico en una operación de actualización.
El siguiente ejemplo incrementa el valor del campo qty en "3":
Bson filter = eq("_id", 1); Bson update = inc("qty", 3); collection.updateOne(filter, update);
El ejemplo anterior actualiza el documento original al siguiente estado:
{ "_id": 1, "color": "red", "qty": 8, "vendor": [ "A", "D", "M" ], "lastModified": { "$date": "2021-03-05T05:00:00Z" } }
Multiplicar
Utilice el método mul() para multiplicar el valor de un campo numérico en una operación de actualización.
El siguiente ejemplo multiplica el valor del campo qty por "2":
Bson filter = eq("_id", 1); Bson update = mul("qty", 2); collection.updateOne(filter, update);
El ejemplo anterior actualiza el documento original al siguiente estado:
{ "_id": 1, "color": "red", "qty": 10, "vendor": [ "A", "D", "M" ], "lastModified": { "$date": "2021-03-05T05:00:00Z" } }
Cambiar el nombre
Utilice el método rename() para cambiar el nombre del valor de un campo en una operación de actualización.
El siguiente ejemplo cambia el nombre del campo qty a "cantidad":
Bson filter = eq("_id", 1); Bson update = rename("qty", "quantity"); collection.updateOne(filter, update);
El ejemplo anterior actualiza el documento original al siguiente estado:
{ "_id": 1, "color": "red", "vendor": [ "A", "D", "M" ], "lastModified": { "$date": "2021-03-05T05:00:00Z" }, "quantity": 5 }
Min
Utilice el método min() para actualizar el valor de un campo con el número menor de los dos especificados en una operación de actualización.
Bson filter = eq("_id", 1); Bson update = min("qty", 2); collection.updateOne(filter, update);
El ejemplo anterior actualiza el documento original al siguiente estado:
{ "_id": 1, "color": "red", "qty": 2, "vendor": [ "A", "D", "M" ], "lastModified": { "$date": "2021-03-05T05:00:00Z" } }
Max
Utilice el método max() para actualizar el valor de un campo con el número mayor de los dos especificados en una operación de actualización.
El siguiente ejemplo establece el valor del campo qty al máximo de su valor actual y "8":
Bson filter = eq("_id", 1); Bson update = max("qty", 8); collection.updateOne(filter, update);
El ejemplo anterior actualiza el documento original al siguiente estado:
{ "_id": 1, "color": "red", "qty": 8, "vendor": [ "A", "D", "M" ], "lastModified": { "$date": "2021-03-05T05:00:00Z" } }
Fecha actual
Utilice el método currentDate() para asignar el valor de un campo en una operación de actualización a la fecha actual como una fecha BSON.
El siguiente ejemplo establece el valor del campo lastModified en la fecha actual como una fecha BSON:
Bson filter = eq("_id", 1); Bson update = currentDate("lastModified"); collection.updateOne(filter, update);
El ejemplo anterior actualiza el documento original al siguiente estado:
{ "_id": 1, "color": "red", "qty": 5, "vendor": [ "A", "D", "M" ], "lastModified": { "$date": "2021-03-22T21:01:20.027Z" } }
Marca de tiempo actual
Utilice el método currentTimestamp() para asignar el valor de un campo en una operación de actualización a la fecha actual como marca de tiempo.
El siguiente ejemplo establece el valor del campo lastModified en la fecha actual como una marca de tiempo BSON:
Bson filter = eq("_id", 1); Bson update = currentTimestamp("lastModified"); collection.updateOne(filter, update);
El ejemplo anterior actualiza el documento original al siguiente estado:
{ "_id": 1, "color": "red", "qty": 5, "vendor": [ "A", "D", "M" ], "lastModified": { "$timestamp": { "t": 1616446880, "i": 5 } } }
Bit
Utilice los métodos bitwiseOr(), bitwiseAnd() y bitwiseXor() para realizar una actualización bit a bit del valor entero de un campo en una operación de actualización.
El siguiente ejemplo realiza un AND bit a bit entre el número "10" y el valor entero del campo qty:
Bson filter = eq("_id", 1); Bson update = bitwiseOr("qty", 10); collection.updateOne(filter, update);
La operación bit a bit da como resultado 15:
0101 1010 ---- 1111
El ejemplo anterior actualiza el documento original al siguiente estado:
{ "_id": 1, "color": "red", "qty": 15, "vendor": [ "A", "D", "M" ], "lastModified": { "$date": "2021-03-05T05:00:00Z" } }
Array Updates
Añadir al conjunto
Utilice el método addToSet() para agregar un valor a una matriz si el valor aún no está presente en una operación de actualización.
El siguiente ejemplo agrega el valor "C" al valor de la matriz del campo vendor:
Bson filter = eq("_id", 1); Bson update = addToSet("vendor", "C"); collection.updateOne(filter, update);
El ejemplo anterior actualiza el documento original al siguiente estado:
{ "_id": 1, "color": "red", "qty": 5, "vendor": [ "A", "D", "M", "C" ], "lastModified": { "$date": "2021-03-05T05:00:00Z" } }
Pop
Utilice el método popFirst() para eliminar el primer elemento de una matriz y el método popLast() para eliminar el último elemento de una matriz en una operación de actualización.
El siguiente ejemplo extrae el primer elemento del valor de la matriz del campo vendor:
Bson filter = eq("_id", 1); Bson update = popFirst("vendor"); collection.updateOne(filter, update);
El ejemplo anterior actualiza el documento original al siguiente estado:
{ "_id": 1, "color": "red", "qty": 5, "vendor": [ "D", "M" ], "lastModified": { "$date": "2021-03-05T05:00:00Z" } }
Tirar todo
Utilice el método pullAll() para eliminar todas las instancias de valores de una matriz existente en una operación de actualización.
El siguiente ejemplo elimina el proveedor "A" y "M" de la matriz vendor:
Bson filter = eq("_id", 1); Bson update = pullAll("vendor", Arrays.asList("A", "M")); collection.updateOne(filter, update);
El ejemplo anterior actualiza el documento original al siguiente estado:
{ "_id": 1, "color": "red", "qty": 5, "vendor": [ "D" ], "lastModified": { "$date": "2021-03-05T05:00:00Z" } }
Halar
Utilice el método pull() para eliminar todas las instancias de un valor de una matriz existente en una operación de actualización.
El siguiente ejemplo elimina el valor "D" de la matriz vendor:
Bson filter = eq("_id", 1); Bson update = pull("vendor", "D"); collection.updateOne(filter, update);
El ejemplo anterior actualiza el documento original al siguiente estado:
{ "_id": 1, "color": "red", "qty": 5, "vendor": [ "A", "M" ], "lastModified": { "$date": "2021-03-05T05:00:00Z" } }
Empujar
Utilice el método push() para agregar un valor a una matriz en una operación de actualización.
Los siguientes ejemplos envían "C" a la matriz vendor:
Bson filter = eq("_id", 1); Bson update = push("vendor", "C"); collection.updateOne(filter, update);
El ejemplo anterior actualiza el documento original al siguiente estado:
{ "_id": 1, "color": "red", "qty": 5, "vendor": [ "A", "D", "M", "C" ], "lastModified": { "$date": "2021-03-05T05:00:00Z" } }
Combinación de múltiples operadores de actualización
Una aplicación puede actualizar múltiples campos de un solo documento combinando dos o más de los operadores de actualización descritos en las secciones anteriores.
El siguiente ejemplo incrementa el valor del campo qty en "6", establece el valor del campo color en "púrpura" y empuja "R" al campo vendor:
Bson filter = eq("_id", 1); Bson update = combine(set("color", "purple"), inc("qty", 6), push("vendor", "R")); collection.updateOne(filter, update);
El ejemplo anterior actualiza el documento original al siguiente estado:
{ "_id": 1, "color": "purple", "qty": 11, "vendor": [ "A", "D", "M", "R" ], "lastModified": { "$date": "2021-03-05T05:00:00Z" } }