文書化された最も明確なポイントではありません。 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 }
}}
どちらが欲しいですか。