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

Mic*_*elB 5 mongoose mongodb node.js aggregation-framework

有数百个线程和运算符可以将日期对象转换为 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'
      }
Run Code Online (Sandbox Code Playgroud)

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

Ash*_*shh 3

您可以使用以下聚合

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