MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

MongoDB $sum und $avg von Unterdokumenten

Um die Summe zu bekommen und durchschnittlich des Channels.Value Elemente für jedes Dokument in Ihrer Sammlung müssen Sie die Aggregationsverarbeitung von mongodb verwenden. Außerdem seit Channels ein Array ist, müssen Sie den $unwind-Operator verwenden, um das Array zu dekonstruieren.

Angenommen, Ihre Sammlung heißt example , so können Sie sowohl die Dokumentensumme als auch den Durchschnitt von Channels.Value erhalten s:

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

Die Ausgabe der Daten Ihres Posts wäre:

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

Wenn Sie mehr als ein Dokument in Ihrer Sammlung haben, sehen Sie eine Ergebniszeile für jedes Dokument, das einen Channels enthält Array.