在mongodb中保存纳秒时间戳(由go生成,使用node.js保存)

aiazj4mn  于 2021-06-07  发布在  Kafka
关注(0)|答案(1)|浏览(558)

我正在尝试将unix时间戳以纳秒为单位存储到 Date mongodb数据库的类型字段。
unix时间戳(以纳秒为单位)在go程序中生成(使用 time.Now().UnixNano() ),提交给kafa,由node.js脚本读取,该脚本使用 mongoose 以纳秒为单位将包含unix时间戳的负载对象写入mongodb存储。
然而,这是抛出一个错误
UnhandledPromisejectionWarning:validationerror:交易验证失败:时间戳:路径“timestamp”处的值“1544720051987010000”的转换到日期失败
在mongodb中有没有更好的方法以纳秒为单位存储unix时间戳?

jaql4c8m

jaql4c8m1#

我试图将unix时间戳以纳秒为单位存储到mongodb数据库的日期类型字段中。nyxynyx公司
那是行不通的。
在内部,date对象存储为有符号的64位整数,表示自unix epoch(1970年1月1日)以来的毫秒数。
mongodb引用:date()
例如,

package main

import (
    "fmt"
    "time"
)

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

Playground:https://play.golang.org/p/21s_deva4jv
输出:

1257894000000

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

相关问题