sql >> Database teknologi >  >> NoSQL >> MongoDB

Tidspræcisionsproblem ved sammenligning i mongodb-driver i Go og muligvis i andre sprog og anden database

Tider i BSON er repræsenteret som UTC millisekunder siden Unix-epoken (spec ). Tidsværdier i Go har nanosekunders præcision.

Til rundturstid. Tidsværdier gennem BSON-rangering, brug tider afkortet til millisekunder siden Unix-epoken:

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

Du kan også bruge Time.Truncate metode:

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

Denne tilgang er afhængig af det faktum, at Unix-epoken og Go nul-tid adskiller sig med et helt antal millisekunder.



  1. Få en liste over alle unikke tags i mongodb

  2. Opret forbindelse til redis fra en anden container i docker

  3. Skub til to separate arrays i ét opdateringskald i mongodb

  4. Veltalende uden for Laravel med jenssegers/laravel-mongodb flere DB-forbindelser