mongodb aggregation Конвертировать timestamp (int32) в Date

Просто в рамках агрегации

В просто в рамках агрегации сделать это не получится,
рекомендуется вообще перейти на 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]

Источник: https://stackoverflow.com/questions/2816...

Key Words for FKN + antitotal forum (CS VSU):