MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Utilisation de la méthode UpdateFirst de MongoDB

Si vous souhaitez utiliser l'opérateur $ dans la partie mise à jour, vous devez écrire explicitement that array dans la partie requête. Alors,

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

devrait être

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 vous connaissez la position de l'élément dans le tableau, '$' n'est pas nécessaire, vous pouvez essayer comme ceci :

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

Même façon de gérer name champ.