OK、解決策は_id値の集約キーを指定することです。これはここに次のように文書化されています:
パイプライン内のドキュメントから単一のフィールド、以前に計算された値、または複数の入力フィールドで構成される集約キーを指定できます。
ただし、実際には集約キーの形式を定義するものではありません。ここで以前のドキュメントを読むと、以前のcollection.groupメソッドが複数のフィールドを受け取る可能性があり、新しいフレームワークで同じ構造が使用されていることがわかりました。
したがって、複数のフィールドをグループ化するには、_id : { success:'$success', responseCode:'$responseCode', label:'$label'}
を使用できます。
のように:
resultsCollection.aggregate(
{ $match : { testid : testid} },
{ $skip : alreadyRead },
{ $project : {
timeStamp : 1 ,
label : 1,
responseCode : 1 ,
value : 1,
success : 1
}},
{ $group : {
_id : { success:'$success', responseCode:'$responseCode', label:'$label'},
max_timeStamp : { $timeStamp : 1 },
count_responseCode : { $sum : 1 },
avg_value : { $sum : "$value" },
count_success : { $sum : 1 }
}}
);