MongoDB-Aggregationsframework - Wie wird nach Datum sortiert, gruppiert nach Tagen und Durchschnittswert für jeden Tag?

8

Ich lerne gerade über das Aggregations-Framework von MongoDB, und ich frage mich, ob jemand mir helfen kann, diese Abfrage zu verbessern, um Folgendes zu tun:

  • Datensätze mit Daten zwischen einem übermittelten Bereich finden / abgleichen
  • Gruppieren Sie die Ergebnisse nach Tag
  • Durchschnittswerte für jeden Tag zurückgeben

Hier ist mein Modell, es gibt einige hilfreiche Eigenschaften, die das Schreiben dieser Abfrage einfacher machen, wie die Eigenschaft day ...

%Vor%

Hier ist meine Abfrage bis jetzt, diese gibt nur einen Gesamtdurchschnitt für alle Daten zurück, die in dem Bereich enthalten sind, und gruppiert nicht nach Tagen und gibt Durchschnittswerte für jeden Tag zurück, so dass Sie $ group by day ...

%Vor%     
ac360 31.03.2014, 20:31
quelle

1 Antwort

8

Das Problem scheint mit der _id zu sein, die Sie für $ group verwenden. Sie sollten nach $day und nicht nach null gruppieren, wenn Sie die Ergebnisse nach Tag gruppieren möchten. Versuchen Sie Folgendes:

%Vor%

Sie müssen Tag und Stunde nicht als separate Elemente im Dokument speichern. Es sind redundante Daten. Sie können das Feld day und hour aus date in der Aggregationsabfrage mithilfe des % extrahieren. co_de% Operatoren.

    
Anand Jayabalan 31.03.2014, 21:14
quelle