Bonjour,

avec spring boot je tente de modifier une valeur avec mongodb, voici l'insertion manuel de ma donnée:

Code java : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
	CommandLineRunner start(PageHtmlRepository pageHtmlRepository) {
		return args -> {
			//remplissage de page html
 
			pageHtmlRepository.deleteAll();
			Stream.of("contenuHtml").forEach(c -> {
				System.out.println("ajotuer actualité ...");
				pageHtmlRepository.save(new PageHtml(null,"je suis aquarell 22","aquarel"));
			});

ma configuration est très simple dans appplication.proprieties:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
spring.data.mongodb.uri=mongodb://localhost:27017/publication
server.port=8787
voici le résultat de ma donnée dans mogo admin:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
{"_id":"5d984c04eb810c7cba70d2a9","contentHtml":"je suis aquarell 22","routePublication":"aquarel","_class":"publication.entite.PageHtml"}
j'ai ma donnée insérer correctement, et je souhaite faire un put pour modifier le "contentHtml"(côté front-end avec angular).
Code angular : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
    let updatePublication = document.getElementById('pageHTML');
    return this.http.put(
      this.hostWbsPagehtml + localStorage.getItem("paramUrl"), { "contentHtml": updatePublication.innerHTML }, {
        headers: new HttpHeaders(
          { 'Authorization': localStorage.getItem('token') }
        )
      }
    );

voici le résultat dans mongo:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
{"_id":"5d984c04eb810c7cba70d2a9","contentHtml":"contenu modifier","_class":"publication.entite.PageHtml"}
j'ai perdu "routePublication" après modification , par contre mon _id de mongo est le même.

comment je dois faire correctement la modification dans mongo db, suis-je obligé de récupérer l'ancienne donnée ,et de modifier cette donnée avec le nouveau contenu
afin qu'il ne puisse pas être supprimé ?

ou il faut obligatoirement passer par mon dao , créer une méthode qui ne modifie que l'attribut concerné ?

voici mon dao :

Code java : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
@RepositoryRestResource
public interface PageHtmlRepository extends MongoRepository<PageHtml,String>{
   //    public List<Sommaire> findByroute(@Param("rt") String nameSommaire);
   @RestResource(path="/byRoute")
   public List<PageHtml> findByroutePublication(@Param("rt") String routePublication);
   String countByRoutePublication(String string);
}

merci de vos réponses