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

MongoDB $sum e $avg de subdocumentos


Para obter a soma e média do Channels.Value elementos para cada documento em sua coleção, você precisará usar o processamento de agregação do mongodb. Além disso, como Channels é um array, você precisará usar o operador $unwind para desconstruir o array.

Supondo que sua coleção seja chamada de example , veja como você pode obter a soma e a média do documento de Channels.Value s:
db.example.aggregate( [ 
    { 
        "$unwind" : "$Channels"
    }, 
    {
        "$group" : {
            "_id" : "$_id",
            "documentSum" : { "$sum" : "$Channels.Value" },
            "documentAvg" : { "$avg" : "$Channels.Value" }
         }
    }
] )

A saída dos dados do seu post seria:
{ 
    "_id" : SomeObjectIdValue,
    "documentSum" : 76,
    "documentAvg" : 25.333333333333332
}

Se você tiver mais de um documento em sua coleção, verá uma linha de resultado para cada documento contendo um Channels variedade.