sql >> Base de Datos >  >> NoSQL >> MongoDB

MongoDB $sum y $avg de subdocumentos

Para obtener la suma y promedio del Channels.Value elementos para cada documento en su colección, necesitará usar el procesamiento de agregación de mongodb. Además, dado que Channels es una matriz, necesitará usar el operador $unwind para deconstruir la matriz.

Asumiendo que tu colección se llama example , así es como puede obtener tanto la suma del documento como el promedio de Channels.Value s:

db.example.aggregate( [ 
    { 
        "$unwind" : "$Channels"
    }, 
    {
        "$group" : {
            "_id" : "$_id",
            "documentSum" : { "$sum" : "$Channels.Value" },
            "documentAvg" : { "$avg" : "$Channels.Value" }
         }
    }
] )

El resultado de los datos de su publicación sería:

{ 
    "_id" : SomeObjectIdValue,
    "documentSum" : 76,
    "documentAvg" : 25.333333333333332
}

Si tiene más de un documento en su colección, verá una fila de resultados para cada documento que contenga un Channels matriz.