MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

MongoDB $sum et $avg des sous-documents

Afin d'obtenir la somme et moyen de Channels.Value éléments pour chaque document de votre collection, vous devrez utiliser le traitement d'agrégation de mongodb. De plus, depuis Channels est un tableau, vous devrez utiliser l'opérateur $unwind pour déconstruire le tableau.

En supposant que votre collection s'appelle example , voici comment obtenir à la fois la somme du document et la moyenne de Channels.Value s :

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

Le résultat des données de votre publication serait :

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

Si vous avez plus d'un document dans votre collection, vous verrez une ligne de résultat pour chaque document contenant un Channels tableau.