Nie najjaśniejszy udokumentowany punkt. Potrzebujesz innej reprezentacji Fields
obiekt tutaj, aby poprawnie zdefiniować warunek wielu pól:
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")
);
To jest za pomocą Fields.field
definicja, która ma „nazwę” i „cel”, dzięki czemu jest poprawnie interpretowana. Używanie zwykłych ciągów spowoduje po prostu domyślną akcję usuwania wszystkiego, aż do ostatniej „kropki” w nazwie pola, i zgodnie z twoim błędem są to to samo. Określenie w tym formularzu mówi konstruktorowi, jak chcesz, aby było to właściwie obsługiwane.
Który zasadniczo serializuje $group
jako:
{ "$group": {
"_id": {
"name1": "$kademeler.isemirleri.isemriKaynagi.name",
"name2": "$kademeler.isemirleri.isemriSebebi.name"
},
"etkilenenAboneSayisi": { "$sum": 1 }
}}
Tego właśnie chcesz.