Не е най-ясната документирана точка. Имате нужда от различно представяне на Fields
обект тук, за да дефинирате правилно вашето условие за множество полета:
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")
);
Това е използването на Fields.field
дефиниция, която има "име" и "цел", така че да се интерпретира правилно. Използването на обикновени низове просто ще доведе до действието по подразбиране за премахване на всичко до последната "точка" в името на полето и според вашата грешка и двете са едно и също нещо. Посочването в този формуляр казва на създателя как искате да бъде обработен правилно.
Което основно сериализира $group
като:
{ "$group": {
"_id": {
"name1": "$kademeler.isemirleri.isemriKaynagi.name",
"name2": "$kademeler.isemirleri.isemriSebebi.name"
},
"etkilenenAboneSayisi": { "$sum": 1 }
}}
Което е, което искате.