将ISO日期转换为UNIX时间戳mongodb

时间:2019-04-25 14:12:46

标签: node.js mongodb mongoose aggregation-framework

有数百个线程和运算符将日期对象转换为ISO字符串,但找不到其他资源来作为Node中mongoose / mongodb聚合运算符的一部分。

我有一个遗留的mongodb 3.6,目前正在生产中使用它,我有一个管道,试图将正常的ISO日期对象从mongo转换为UNIX时间戳,以便与ngx-charts和其他对象一起使用图表。

我不能使用$ toDate,$ convert运算符或$ dateFromString,因为我需要的选项在3.6中不可用

到目前为止,我已经尝试了以下方法:

      $project: {
        _id: 0,
        // name: '$_id._id',
        value: '$_id.count',
        name: new Date.parse('$_id.date').getTime(),
        min: '$min',
        max: '$max'
      }

,但是由于聚合是在db上处理的,所以都不起作用,也不知道该函数是什么。我看过很多运算符,并尝试先转换为字符串,然后再转换回UNIX日期,但是似乎没有任何可用于从该ISO日期转换为javascript / unix时间戳的信息。

1 个答案:

答案 0 :(得分:2)

您可以使用以下汇总

db.getCollection('sessions').aggregate([
  { "$project": {
    "timestamp": {
      "$subtract": [ "$createdAt", new Date("1970-01-01") ]
    }
  }}
])