MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Quadro di aggregazione Mongodb | Raggruppare su più valori?

OK, quindi la soluzione è specificare una chiave aggregata per il valore _id. Questo è documentato qui come:

Puoi specificare un singolo campo dai documenti nella pipeline, un valore calcolato in precedenza o una chiave aggregata composta da diversi campi in entrata.

Ma in realtà non definisce il formato per una chiave aggregata. Leggendo la documentazione precedente qui ho visto che il precedente metodo collection.group poteva richiedere più campi e che la stessa struttura viene utilizzata nel nuovo framework.

Quindi, per raggruppare più campi puoi usare _id : { success:'$success', responseCode:'$responseCode', label:'$label'}

Come in:

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 }
    }}
);