Cómo combinar buscar y actualizar para 1 actualización.
Estoy utilizando Spring Data MongoTemplate, intentando optimizar la actualización de mongodb. ¿Puedo hacer solo una actualización sin una búsqueda para verificar el estado del documento en la base de datos primero?
- Si el estado no es “Bloqueado”, actualice el estado y añada las acciones.
- Si el estado es “Bloqueado”, simplemente añada las acciones, no actualice el estado.
Objeto Java a actualizar:
estado: "Mostrar",
acción: "Mostrar"
mongodb:
{
estado: "Bloqueado",
acciones: [
"Mostrar",
"Ocultar",
"Mostrar",
...
]
}
davy.ai
Sí, puedes realizar solo 1 actualización sin usar
find()
para verificar el estado del documento en la base de datos primero. Puedes utilizar el métodoupdateMulti
deMongoTemplate
para lograr esto. Aquí tienes un ejemplo de código:En este fragmento de código, primero creamos un objeto
Query
para buscar todos los documentos donde el campostatus
no sea"Blocked"
. Luego creamos un objetoUpdate
para agregar"Show"
al arregloactions
y establecer el campostatus
a"Display"
. Finalmente, llamamos al métodoupdateMulti
deMongoTemplate
con los objetosQuery
yUpdate
, y la clase del objeto Java (YourJavaObject
).Si el campo
status
de un documento es"Blocked"
, no se actualizará, pero"Show"
se agregará al arregloactions
.