2017-10-04 7 views
0

私のデータは、このようになります -MongoDBの日付に従ってバケットを作成するにはどうすればよいですか?

{ 
    'field1' : 123 
    "timestamp" : ISODate("2017-10-04T13:35:57.621Z") 
}, 
{ 
    'field1' : 123 
    "timestamp" : ISODate("2017-10-04T13:35:57.621Z") 
}, 
{ 
    'field1' : 123 
    "timestamp" : ISODate("2012-10-04T13:35:57.621Z") 
}, 
{ 
    'field1' : 123 
    "timestamp" : ISODate("2012-10-04T13:35:57.621Z") 
}, 
{ 
    'field1' : 123 
    "timestamp" : ISODate("2012-10-04T13:35:57.621Z") 
} 

私はこのような何か結果を取得しようとしています - 今、私のクエリがある

{ "date" : '2012-10-04', "count" : 3 }, 
{ "date" : '2017-10-04', "count" : 2 } 

を -

db.train_data.aggregate({ $group: { _id: { $dayOfYear: "$timestamp"},count: { $sum: 1 } } }) 

それはちょうど日付を集約しかし、日付は表示されません。

答えて

1

あなたのデータを使用して、このAGG式:

db.foo.aggregate([ 
{$addFields: {datestr: {$dateToString: {format: "%Y-%m-%d", date: "$timestamp"}}}} 
,{$group: {_id:"$datestr", n:{$sum:1}}} 

       ]); 
:あなたが代わりにその上JUST Y-M-D部分、グループを上AGGしたい場合

{ 
    "_id" : ISODate("2012-10-04T13:35:57.621Z"), 
    "n" : 3, 
    "datestr" : "2012-10-04" 
} 
{ 
    "_id" : ISODate("2017-10-04T13:35:57.621Z"), 
    "n" : 2, 
    "datestr" : "2017-10-04" 
} 

を生み出す

db.foo.aggregate([ 
    {$group: {_id:"$timestamp", n:{$sum:1}}} 
    ,{$addFields: {datestr: {$dateToString: {format: "%Y-%m-%d", date: "$_id"}}}} 

       ]); 

関連する問題