sql >> Databáze >  >> NoSQL >> MongoDB

Problém s přesností času při porovnávání v ovladači mongodb v Go a případně v jiném jazyce a jiné databázi

Časy v BSON jsou reprezentovány jako UTC milisekundy od epochy Unixu (spec ). Časové hodnoty v Go mají nanosekundovou přesnost.

Chcete-li zaokrouhlit čas cesty. Hodnoty času prostřednictvím řazení BSON použijte časy zkrácené na milisekundy od epochy Unixu:

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()), 
}

Můžete také použít Time.Truncate metoda:

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

Tento přístup se opírá o skutečnost, že epocha Unixu a nulový čas Go se liší o celý počet milisekund.



  1. Co je třída Hadoop Reducer v MapReduce?

  2. Výkon hromadného vkládání v MongoDB pro velké sbírky

  3. MongoDB:exportovat odlišnou hodnotu sloupce

  4. Připojování k Redis běžícímu v Docker Container z hostitelského počítače