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 usar el valor de otro campo mediante java (Spring) mongodb update y push?

Antes de la actualización:

{
id:…,
field1: v1,
field2: [v2,v3]
}

v* son instancias de la clase V

Después de la actualización:

{
id:…,
field1: new_v,
field2: [v1,v2,v3]
}

Se intentó lo siguiente:

Consulta select = Consulta.consulta(Criterio.donde(id).en(docIdList));
Actualizar actualización = nueva Actualización();
actualización.presionar(“field2”).enPosición(0).valor(“$field1”);
V new_v = new V(“NUEVO”);
actualización.establecer(“field1”,new_v);
ResultadoDeActualización resultadoDeActualización = mongoTemplate.actualizarMúltiples(select, actualización,V.class);

El problema es que se obtiene lo siguiente:

{
id:…,
field1: new_v,
field2: [field1,v2,v3]
}

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Necesitas actualizar el objeto update para usar el operador $set en lugar de push:

    Update update = new Update();
    update.set("field2.0", "$field1");
    V new_v = new V("NEW");
    update.set("field1", new_v);
    UpdateResult updateResult = mongoTemplate.updateMulti(select, update,V.class);
    

    Esto debería dar como resultado la salida deseada:

    {
      id:...,
      field1: new_v,
      field2: [v1,v2,v3]
    }
    

Comments are closed.