2014-01-17 13 views
14

は、これはどのようにグループのデータ毎週のでしょうか?MongoDBのグループは2週間ごと

ありがとうございます。

おかげMzzlに受け入れ答えによら

正しい方法は、これは2週間ごとにグループ化するために働きます。以下は完全版です。

db.transactions.aggregate([ 
    {$match: {status: "committed"}}, 
    {$project: { 
     twoweekperiod: { 
      $subtract: [ 
       {$week: "$date"}, {$mod: [{$week: "$date"}, 2] } 
      ] 
     }, 
     date:1, 
     status:1 
    }}, 
    {$group: { 
     _id: { 
      year: {$year: "$date"},         
      twoweek: "$twoweekperiod"      
     }, 
     count: {$sum: 1}, 
     start_date: {$min: "$date"}, 
     end_date: {$max: "$date"}        
    }} 
]) 

+0

日付フィールドにはどのような形式がありますか? – rubenfa

+0

標準化されたmongodb ISODateです。 ISODate(「2013-12-25T17:00:00Z」と表示された場合) –

答えて

7

$ weekには週番号が含まれていると仮定すると、「2週間ごとに」番号を作成してグループ化することができます。私はMongoのクエリで整数除算を実行する方法を知らないので、代わりに私は隔週で変わる代わりの数を取得するには、weeknumberからweeknumber mod 2を引く

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

:このような何かを試してみてください毎週。その後、この番号でグループ化を試みることができます。

+0

これは機能します!ありがとうたくさん:D –

関連する問題