MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Problem z dokładnością czasu w porównaniu w sterowniku mongodb w Go i prawdopodobnie w innym języku i innej bazie danych

Czasy w BSON są reprezentowane w milisekundach UTC od epoki Uniksa (spec ). Wartości czasu w Go mają dokładność nanosekundową.

Aby zaokrąglić czas podróży.Wartości czasu przez marshalling BSON, użyj czasów skróconych do milisekund od epoki Uniksa:

func truncate(t time.Time) time.Time {
    return time.Unix(0, t.UnixNano()/1e6*1e6)
}

...

u := user{
    Username:          "test_bson_username",
    Password:          "1234",
    UserAccessibility: "normal",
    RegisterationTime: truncate(time.Now()), 
}

Możesz także użyć Time.Truncate metoda:

u := user{
    Username:          "test_bson_username",
    Password:          "1234",
    UserAccessibility: "normal",
    RegisterationTime:  time.Now().Truncate(time.Millisecond),
}

To podejście opiera się na fakcie, że epoka Unixa i czas Go zero różnią się o całkowitą liczbę milisekund.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Django nie może połączyć się z atlasem mongoDB

  2. DAO i wstrzykiwanie zależności, porady?

  3. Konwersja dokumentów BSON do JSON w Javie

  4. Najlepszy sposób na przechowywanie obrazów w aplikacji internetowej MERN stack

  5. Znajdź sumę pól wewnątrz tablicy w MongoDB