es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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",
        ...
    ]
}
Tags:  , , ,

Answer

  1. Avatar for 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étodo updateMulti de MongoTemplate para lograr esto. Aquí tienes un ejemplo de código:

    Query query = new Query(Criteria.where("status").ne("Blocked"));
    Update update = new Update().addToSet("actions", "Show").set("status", "Display");
    mongoTemplate.updateMulti(query, update, YourJavaObject.class);
    

    En este fragmento de código, primero creamos un objeto Query para buscar todos los documentos donde el campo status no sea "Blocked". Luego creamos un objeto Update para agregar "Show" al arreglo actions y establecer el campo status a "Display". Finalmente, llamamos al método updateMulti de MongoTemplate con los objetos Query y Update, y la clase del objeto Java (YourJavaObject).

    Si el campo status de un documento es "Blocked", no se actualizará, pero "Show" se agregará al arreglo actions.

Comments are closed.