Сохранение наносекундных временных меток в MongoDB (сгенерировано Go, сохранено с использованием Node.js) - PullRequest
0 голосов
/ 13 декабря 2018

Я пытаюсь сохранить метки времени Unix в наносекундах в поле типа Date базы данных Mongodb.

Метки времени Unix в наносекундах создаются в программе Go (с time.Now().UnixNano()), отправленной вКафа для чтения скриптом Node.js, который использует mongoose для записи объекта полезной нагрузки, содержащего метку времени unix в наносекундах, в хранилище Mongodb.

Однако это выдает ошибку

UnhandledPromiseRejectionWarning: ValidationError: сбой проверки сделки: отметка времени: сбой приведения к дате для значения «1544720051987010000» по пути «отметка времени»

Есть ли лучший способ хранить метки времени unix в наносекундах в Mongodb?

1 Ответ

0 голосов
/ 13 декабря 2018

Я пытаюсь сохранить временные метки Unix в наносекундах в поле Тип даты базы данных Mongodb.Nyxynyx

Это не сработает.


Внутренне объекты Date хранятся как 64-разрядное целое число со знаком, представляющее количество миллисекунд с момента Unixэпоха (1 января 1970 г.).

MongoDB Ссылка: Дата ()


Например,

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.

...