aggregation framework - Mongodb group and sort by date from subdocument -


i have following mongodb documents

 {      "_id" : isodate("2016-01-04t23:00:11.000+0000"),      "value" : {         "hour" : isodate("2016-01-04t23:00:00.000+0000"),          "day" : isodate("2016-01-04t00:00:00.000+0000"),          "time" : isodate("2016-01-04t23:00:11.000+0000"),          "day_chan1" : 90.162,          "day_chan2" : 77.547,          "day_chan3" : 79.32,          "total_day_chan" : 247.029     } } {      "_id" : isodate("2016-01-04t23:00:23.000+0000"),      "value" : {         "hour" : isodate("2016-01-04t23:00:00.000+0000"),          "day" : isodate("2016-01-04t00:00:00.000+0000"),          "time" : isodate("2016-01-04t23:00:23.000+0000"),          "day_chan1" : 90.167,          "day_chan2" : 77.549,          "day_chan3" : 79.322,          "total_day_chan" : 247.038     } } {      "_id" : isodate("2016-01-04t23:00:35.000+0000"),      "value" : {         "hour" : isodate("2016-01-04t23:00:00.000+0000"),          "day" : isodate("2016-01-04t00:00:00.000+0000"),          "time" : isodate("2016-01-04t23:00:35.000+0000"),          "day_chan1" : 90.172,          "day_chan2" : 77.551,          "day_chan3" : 79.324,          "total_day_chan" : 247.047     } } 

where want group , sort documents based on day subdocument, data same day come out in array.

so far tried using

.aggregate([{                         '$sort': {                             '_id': 1                         }                     },                     {                          '$group' : {                              '_id': '$value.day',                              'data': {                                                                      '$push' : '$value'                              }                          }                      },                                             {                         '$project': {                             '_id' : 1,                             'data':1                         }                     }       ]); 

but noticed data 2 seperate dates coming same array

here inside 1 of arrays

  { hour: tue jan 05 2016 00:00:00 gmt+0000 (gmt),   day: tue jan 05 2016 00:00:00 gmt+0000 (gmt),   time: tue jan 05 2016 00:00:12 gmt+0000 (gmt),   day_chan1: 91.635,   day_chan2: 78.274,   day_chan3: 80.062,   total_day_chan: 249.971 } { hour: mon jan 04 2016 23:00:00 gmt+0000 (gmt),   day: mon jan 04 2016 00:00:00 gmt+0000 (gmt),   time: mon jan 04 2016 23:00:11 gmt+0000 (gmt),   day_chan1: 90.162,   day_chan2: 77.547,   day_chan3: 79.32,   total_day_chan: 247.029 } 

but ideally these 2 should in seperate arrays

          [{ hour: tue jan 05 2016 00:00:00 gmt+0000 (gmt),       day: tue jan 05 2016 00:00:00 gmt+0000 (gmt),       time: tue jan 05 2016 00:00:12 gmt+0000 (gmt),       day_chan1: 91.635,       day_chan2: 78.274,       day_chan3: 80.062,       total_day_chan: 249.971 }, { },{ hour: tue jan 05 2016 00:0:00 gmt+0000 (gmt),       day: tue jan 05 2016 00:00:00 gmt+0000 (gmt),       time: tue jan 05 2016 01:01:12 gmt+0000 (gmt),       day_chan1: 91.635,       day_chan2: 78.274,       day_chan3: 80.062,       total_day_chan: 249.971 }],      [{ hour: mon jan 04 2016 23:00:00 gmt+0000 (gmt),       day: mon jan 04 2016 00:00:00 gmt+0000 (gmt),       time: mon jan 04 2016 23:00:11 gmt+0000 (gmt),       day_chan1: 90.162,       day_chan2: 77.547,       day_chan3: 79.32,       total_day_chan: 247.029 }] 

all documents same day collected in array

[array date1, array date2, array date3 ] , on.

the example documents have provided of same dates. changed date of 1 of document , ran command have provide , got following result.

{     "_id" : isodate("2016-01-05t00:00:00z"),     "data" : [         {             "hour" : isodate("2016-01-05t23:00:00z"),             "day" : isodate("2016-01-05t00:00:00z"),             "time" : isodate("2016-01-05t23:00:11z"),             "day_chan1" : 90.162,             "day_chan2" : 77.547,             "day_chan3" : 79.32,             "total_day_chan" : 247.029         }     ] } {     "_id" : isodate("2016-01-04t00:00:00z"),     "data" : [         {             "hour" : isodate("2016-01-04t23:00:00z"),             "day" : isodate("2016-01-04t00:00:00z"),             "time" : isodate("2016-01-04t23:00:23z"),             "day_chan1" : 90.167,             "day_chan2" : 77.549,             "day_chan3" : 79.322,             "total_day_chan" : 247.038         },         {             "hour" : isodate("2016-01-04t23:00:00z"),             "day" : isodate("2016-01-04t00:00:00z"),             "time" : isodate("2016-01-04t23:00:35z"),             "day_chan1" : 90.172,             "day_chan2" : 77.551,             "day_chan3" : 79.324,             "total_day_chan" : 247.047         }     ] } 

so according me not find problem.


Comments

Popular posts from this blog

how to insert data php javascript mysql with multiple array session 2 -

multithreading - Exception in Application constructor -

windows - CertCreateCertificateContext returns CRYPT_E_ASN1_BADTAG / 8009310b -