OK, vì vậy giải pháp là chỉ định một khóa tổng hợp cho giá trị _id. Điều này được ghi lại ở đây là:
Bạn có thể chỉ định một trường đơn lẻ từ các tài liệu trong đường dẫn, một giá trị đã tính toán trước đó hoặc một khóa tổng hợp được tạo thành từ một số trường đến.
Nhưng nó không thực sự xác định định dạng cho một khóa tổng hợp. Đọc tài liệu trước đó ở đây, tôi thấy rằng phương thức collection.group trước đó có thể nhận nhiều trường và cấu trúc giống nhau được sử dụng trong khuôn khổ mới.
Vì vậy, để nhóm thành nhiều trường, bạn có thể sử dụng _id : { success:'$success', responseCode:'$responseCode', label:'$label'}
Như trong:
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 }
}}
);