sql >> Database >  >> NoSQL >> MongoDB

Tijdsprecisieprobleem bij vergelijking in mongodb-stuurprogramma in Go en mogelijk in een andere taal en andere database

Tijden in BSON worden weergegeven als UTC-milliseconden sinds het Unix-tijdperk (spec ). Tijdwaarden in Go hebben een nauwkeurigheid van nanoseconden.

Om de reistijd af te ronden.Tijdwaarden via BSON-marshalling, gebruik tijden die zijn afgekapt tot milliseconden sinds het Unix-tijdperk:

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

U kunt ook de Time.Truncate gebruiken methode:

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

Deze benadering is gebaseerd op het feit dat Unix-tijdperk en Go-nultijd een geheel aantal milliseconden van elkaar verschillen.



  1. Upsert Array Elements die voldoen aan criteria in een MongoDB-document?

  2. Redis beheerde Pub/Sub-server

  3. Beperk en sorteer inline Map/Reduce in MongoDB

  4. Een lijst met substrings uit MongoDB extraheren met behulp van een reguliere expressie