在 MongoDB 中保存纳秒时间戳(由 Go 生成,使用 Node.js 保存)

Saving Nanosecond Timestamps in MongoDB (Generated by Go, Saved using Node.js)

我正在尝试将以纳秒为单位的 Unix 时间戳存储到 Mongodb 数据库的 Date 类型字段中。

以纳秒为单位的 unix 时间戳在 Go 程序中生成(使用 time.Now().UnixNano()),提交给 Kafa 以供使用 mongoose 写入负载的 Node.js 脚本读取Mongodb 存储中包含以纳秒为单位的 unix 时间戳的对象。

然而这是一个错误

UnhandledPromiseRejectionWarning: ValidationError: trade validation failed: timestamp: Cast to Date failed for value "1544720051987010000" at path "timestamp"

有没有更好的方法在 Mongodb 中以纳秒为单位存储 unix 时间戳?

I am trying to store Unix timestamps in nanoseconds into the Date type field of a Mongodb database. Nyxynyx

那是行不通的。


Internally, Date objects are stored as a signed 64-bit integer representing the number of milliseconds since the Unix epoch (Jan 1, 1970).

MongoDB Reference: Date()


例如,

package main

import (
    "fmt"
    "time"
)

func main() {
    timestamp := time.Now().UnixNano() / int64(time.Millisecond)
    fmt.Println(timestamp)
}

游乐场:https://play.golang.org/p/21S_DeVA4jv

输出:

1257894000000

要存储 Unix 纳秒,请使用 long 数据类型。