Mongo durchschnittliche Aggregationsabfrage ohne Gruppe

8

Ich versuche, den Durchschnitt eines ganzen Feldes mit dem Aggregations-Framework in Mongo zu erhalten. Jedoch kann ich kein Beispiel finden, das es ohne einen Gruppenparameter verwendet.

Ich habe folgende Dokumentstruktur:

%Vor%

Grundsätzlich möchte ich den Durchschnittswert des bvc-Feldes und jedes anderen numerischen Werts für die gesamte Sammlung auf schnellstmögliche Weise ermitteln (ohne MapReduce zu verwenden, da es weniger effizient ist als das Aggregationsframework) / p>

Ich habe versucht, auch auf einer größeren als Null-Basis zu gruppieren, aber ohne Erfolg:

%Vor%

Ich schätze jede Hilfe, die Sie leisten könnten.

Referenzen: Mongo-Aggregationshandbuch

    
NicolasZ 27.04.2014, 12:39
quelle

2 Antworten

28

Speichern Sie zuerst numerische Werte als Zahlen. Danach können Sie eine einfache Anweisung verwenden, um den Durchschnitt zu berechnen:

%Vor%

Sie können einfach weitere $avg Aggregationsoperatoren verwenden, um Durchschnittswerte für Ihre anderen numerischen Felder zu erhalten:

%Vor%     
Sebastian 27.04.2014, 12:48
quelle
2

Wenn also Ihre Daten tatsächlich numerisch waren, was nicht der Fall ist, und Sie die Dokumente ausschließen möchten, die einen "größer als null" Wert haben, dann fügen Sie ein $match Anweisung in Ihrer Aggregationspipeline, um diese Dokumente" herauszufiltern ":

%Vor%     
Neil Lunn 27.04.2014 12:59
quelle