2014-01-17 8 views
14

Dies ist, wie die Daten wöchentlich zur Gruppe:mongodb Gruppe alle 2 Wochen

transactions.aggregate({ 
    [ 
     {$match: {status: "committed"}}, 
     {$group: { 
      _id: { 
       $year: "$date",         
       $week: "$date"       
      }, 
      count: {$sum: 1}, 
      start_date: {$min: "$date"}, 
      end_date: {$max: "$date"}        
     }} 
    ] 
});  

Die Frage ist, wie etwa alle 2 Wochen der Gruppierung und die Zählung bekommen?

Vielen Dank.

RICHTIGE WEG NACH AKZEPTIERT ANTWORT

Dank Mzzl funktioniert dies alle 2 Wochen für die Gruppierung. Unten ist die vollständige Version.

+0

Welches Format hat Ihr Datumsfeld? – rubenfa

+0

Es ist ein standardisiertes Monodib-ISODat, z.B. ISODate ("2013-12-25T17: 00: 00Z") bei der Anzeige –

Antwort

7

Angenommen, $ week enthält die Wochennummer, können Sie eine 'alle zwei Wochen' Nummer erstellen und nach dieser Gruppe gruppieren. Probieren Sie etwas wie folgt aus:

{ 
    $project: { 
     twoweekperiod: { 
      $subtract: [ 
       '$week', {$mod: ['$week', 2] } 
      ] 
     }, status:1, date:1, etc... 
    } 
} 

ich nicht von einer Art und Weise kennen eine ganze Zahl divide in einer Mongo Abfrage zu tun, so dass ich stattdessen subtrahieren weeknumber mod 2 von der Wochennummer, um eine Reihe zu bekommen, die stattdessen jede zweite Woche ändert sich von jede Woche. Sie könnten dann versuchen, nach dieser Nummer zu gruppieren.

+0

Das funktioniert !! Vielen Dank: D –

Verwandte Themen