小编Sid*_*kur的帖子

将日期从毫秒转换为ISODate对象

我试图按小时聚合MongoDB colloection中的记录,并需要将存储为timestamp(毫秒)的日期转换为ISODate,以便我可以使用聚合框架的内置日期运算符($ hour,$ month等)

记录存储为

{ 
"data" : { "UserId" : "abc", "ProjId" : "xyz"}, 
"time" : NumberLong("1395140780706"),
"_id" : ObjectId("532828ac338ed9c33aa8eca7") 
} 
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用以下类型的聚合查询:

db.events.aggregate(
    { 
       $match : { 
         "time" : { $gte : 1395186209804, $lte : 1395192902825 } 
       } 
    }, 
    { 
       $project : {
         _id : "$_id", 
         dt : {$concat : (Date("$time")).toString()} // need to project as ISODate
       } 
    },
    // process records further in $project or $group clause
)
Run Code Online (Sandbox Code Playgroud)

产生以下形式的结果:

{
    "result" : [
        { 
            "_id" : ObjectId("5328da21fd207d9c3567d3ec"), 
            "dt" …
Run Code Online (Sandbox Code Playgroud)

javascript type-conversion mongodb aggregation-framework

21
推荐指数
2
解决办法
1万
查看次数