MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Estrutura de agregação do Mongodb | Agrupar em vários valores?


OK, então a solução é especificar uma chave agregada para o valor _id. Isso está documentado aqui como:

Você pode especificar um único campo dos documentos no pipeline, um valor calculado anteriormente ou uma chave agregada composta de vários campos de entrada.

Mas na verdade não define o formato de uma chave agregada. Lendo a documentação anterior aqui, vi que o método collection.group anterior pode receber vários campos e que a mesma estrutura é usada no novo framework.

Portanto, para agrupar vários campos, você pode usar _id : { success:'$success', responseCode:'$responseCode', label:'$label'}

Como em:
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 }
    }}
);