sql >> Base de Datos >  >> NoSQL >> MongoDB

Uso del método UpdateFirst de MongoDB

Si desea utilizar el operador $ en la parte de actualización, debe escribir explícitamente that array en la parte de consulta. Entonces,

mongoTemplate.updateFirst(
query(where("name").is("Award1")), 
Update.update("brand.$.descr", "Desc2"),
Awards.class);

debería ser

mongoTemplate.updateFirst(
query(where("name").is("Award1"))
.and("brand.name").is("Brand1"), // "brand" in "brand.name" is necessary, others according to your requirement
Update.update("brand.$.descr", "Desc2"),
Awards.class);

Si conoce la posición del elemento en el arreglo, '$' no es necesario, puede probar así:

mongoTemplate.updateFirst(
query(where("name").is("Award1")), 
Update.update("brand.0.descr", "Desc2"), // 0 is the index of element in array
Awards.class);

La misma forma de manejar name campo.