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
- 2906 reads