OK, więc rozwiązaniem jest określenie klucza agregującego dla wartości _id. Jest to udokumentowane tutaj jako:
Możesz określić pojedyncze pole z dokumentów w potoku, wcześniej obliczoną wartość lub klucz zbiorczy złożony z kilku pól przychodzących.
Ale w rzeczywistości nie definiuje formatu klucza agregującego. Czytając tutaj wcześniejszą dokumentację, zauważyłem, że poprzednia metoda collection.group mogła przyjmować wiele pól i że ta sama struktura jest używana w nowym frameworku.
Tak więc, aby pogrupować wiele pól, możesz użyć _id : { success:'$success', responseCode:'$responseCode', label:'$label'}
Jak w:
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 }
}}
);