首页 > 解决方案 > 将 ISO 日期转换为 UNIX 时间戳 mongodb

问题描述

有数百个线程和运算符可以将日期对象转换为 ISO 字符串,但是作为 Node.js 中的 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'
      }

但是这些都不起作用,因为聚合是在数据库上处理的,并且不知道那个函数是什么。我查看了许多运算符并尝试先转换为字符串,然后再转换回 UNIX 日期,但似乎没有任何可用于从该 ISO 日期转换为 javascript/unix 时间戳的内容。

标签: node.jsmongodbmongooseaggregation-framework

解决方案


您可以使用以下聚合

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

推荐阅读