Bonjour,

Je suis obligé de mettre en place des filtres conditionnels dans une table pour une aggregation dans spring boot 2.4.5
avec un server mongo 4.0, et un client 4.0.6 mongo-driver-sync

j'utilise l'annotation @Aggregate sur l'interface , ca marchait très bien avec des dates qui n'étaient que des valeurs ?0,?1, mais
quand je passe un filtre avec des conditions or,not,ne,exist sur des champs simple,....., ca plante a cause des operateurs qu'il n'arrive pas à interpreter,
même si je mets du vide, il se plante, si je retire le parametre ?0 dans l'aggrgation annoter, .elle marche.

ca marche très bien si je le fais en direct sous l'interpreteur mongo

un truc dans le genre

avant
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
@Aggregate( pipeline = ' { $match {  $or: [ "testA" : { $exists : true, $eq "valueA"},  "testB" : { $exists : true, $eq : "valueB" } ] }'
public List<Result> monaggregation ( );
ci-dessous, c'est ce que je souhaiterais faire, mais ca plante sous spring data mongo.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
@Aggregate ( pipeline = ' { $match {  ?0 }' )
public List<Result> monaggregation ( monfiltre );
 
 
public List<Result>  monaggregation ( ) {
 
       String monfiltre=  ' $or: [ "testA" : { $exists : true, $eq "valueA"},  "testB" : { $exists : true, $eq : "valueB" } ] ';
 
      List<Result> result= monaggrepository.monaggregation( monfiltre )
}
Quelqu'un a déjà fait ca et a un exemple de code ou un lien qui le démontre avec un mongo 4.0,

vu que mes "filtres" sont en table, les conditions et les champs et les valeurs peuvent changer selon le besoin. en mysql ca n'aurait pas été un pb.

Merci pour vos solutions ou vos liens.

@++
JP