Pas le point documenté le plus clair. Vous avez besoin d'une représentation différente des Fields
objet ici pour définir correctement votre condition de champs multiples :
Aggregation aggregation = newAggregation(
match(criteria),
unwind("kademeler"),
match(criteria),
group(
Fields.from(
Fields.field("name1", "kademeler.isemirleri.isemriKaynagi.name"),
Fields.field("name2", "kademeler.isemirleri.isemriSebebi.name")
)).count().as("etkilenenAboneSayisi")
);
Cela utilise le Fields.field
définition qui a un "nom" et une "cible" afin qu'elle soit interprétée correctement. L'utilisation de chaînes simples entraînera simplement l'action par défaut de tout supprimer jusqu'au dernier "point" dans le nom du champ, et selon votre erreur, ce sont les deux la même chose. Spécifier dans ce formulaire indique au constructeur comment vous souhaitez qu'il soit correctement géré.
Qui sérialise essentiellement le $group
comme :
{ "$group": {
"_id": {
"name1": "$kademeler.isemirleri.isemriKaynagi.name",
"name2": "$kademeler.isemirleri.isemriSebebi.name"
},
"etkilenenAboneSayisi": { "$sum": 1 }
}}
C'est ce que vous voulez.