MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Uso do método MongoDB UpdateFirst


Se você quiser usar o operador $ na parte de atualização, você deve escrever explicitamente that array na parte da consulta. Então,
mongoTemplate.updateFirst(
query(where("name").is("Award1")), 
Update.update("brand.$.descr", "Desc2"),
Awards.class);

deveria estar
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);

Se você sabe a posição do elemento no array, `$' é desnecessário, você pode tentar assim:
mongoTemplate.updateFirst(
query(where("name").is("Award1")), 
Update.update("brand.0.descr", "Desc2"), // 0 is the index of element in array
Awards.class);

Mesma maneira de lidar com name campo.