mongodb aggregation Конвертировать timestamp (int32) в Date
Primary tabs
Просто в рамках агрегации
В просто в рамках агрегации сделать это не получится,
рекомендуется вообще перейти на Date если вы хотите использовать операторы типа $year
Используя JS
Можно написать свою функцию, правда, тогда на выходе мы не получим не курсор, а массив, например:
m = function(doc) { var date = new Date(); date.setTime(doc['dates']*1000); var res = new Object(); res.count = 1; res.date = date.getMonth()+ ' '+ date.getFullYear(); if ( date.getMonth()+ ' '+ date.getFullYear() in count_obj) { count_obj[date.getMonth()+ ' '+ date.getFullYear()]++; } else { count_obj[date.getMonth()+ ' '+ date.getFullYear()]=0; } return count_obj; //date.getMonth(); // { date.getMonth()+ ' '+ date.getFullYear() : {count:1}}; }; var count_obj = new Object; db.following_report.aggregate([ {"$match":{"$and":[{"creation_data.admitted_at":{"$exists":true}}, {"creation_data.admitted_at":{"$ne":null}}]}}, {"$group":{"_id":"$creation_data.organization_id","dates":{"$push":"$creation_data.admitted_at"}}}, {"$lookup":{"from":"medical_organization","localField":"_id","foreignField":"_id","as":"org_data"}}, {"$unwind":"$org_data"}, {"$unwind":"$dates"}//, //{"$group":{"_id":{"$subtract":[{"$divide":[{"$add":["$dates",10800]},604800]},{"$mod":[{"$divide":[{"$add":["$dates",10800]},604800]},1]}]},"sum_value":{"$sum":1}}},{"$project":{"_id":0,"number":"$sum_value","step_date":"$_id"}},{"$sort":{"step_date":1}} ], {"allowDiskUse":true,"cursor":{"batchSize":50000}}).map(m)[0]
- Log in to post comments
- 2281 reads