No es el punto documentado más claro. Necesita una representación diferente de los Fields
objeto aquí para definir su condición de campo múltiple correctamente:
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")
);
Eso está usando el Fields.field
definición que tiene un "nombre" y un "objetivo" para que se interprete correctamente. El uso de cadenas simples solo dará como resultado la acción predeterminada de eliminar todo hasta el último "punto" en el nombre del campo, y según su error, ambos son lo mismo. Especificar en este formulario le dice al constructor cómo desea que se maneje correctamente.
Que básicamente serializa el $group
como:
{ "$group": {
"_id": {
"name1": "$kademeler.isemirleri.isemriKaynagi.name",
"name2": "$kademeler.isemirleri.isemriSebebi.name"
},
"etkilenenAboneSayisi": { "$sum": 1 }
}}
Que es lo que quieres.