2017-10-04 3 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") 
} 

나는이 같은 결과를 얻기 위해 노력하고 있어요 -

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

그것은 날짜를 바로 집계 -

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

지금 내 쿼리입니다 맞지만 날짜는 표시되지 않습니다.

답변

1

데이터를 사용하여,이 AGG 표현 :

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

       ]); 
: 당신이 그 대신에 그냥 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"}}}} 

       ]); 

관련 문제