Inte den tydligaste dokumenterade punkten. Du behöver en annan representation av Fields
objekt här för att definiera ditt villkor för flera fält korrekt:
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")
);
Det är att använda Fields.field
definition som har ett "namn" och ett "mål" så att den tolkas rätt. Att använda vanliga strängar kommer bara att resultera i standardåtgärden att ta bort allt tills den sista "punkten" i fältnamnet, och enligt ditt fel är båda samma sak. Att specificera i detta formulär talar om för byggaren hur du vill att det ska hanteras korrekt.
Vilket i princip serialiserar $group
som:
{ "$group": {
"_id": {
"name1": "$kademeler.isemirleri.isemriKaynagi.name",
"name2": "$kademeler.isemirleri.isemriSebebi.name"
},
"etkilenenAboneSayisi": { "$sum": 1 }
}}
Vilket är vad du vill.