MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Проблем с точността на времето при сравнение в драйвера на mongodb в Go и евентуално в друг език и друга база данни

Времената в BSON са представени като UTC милисекунди от епохата на Unix (spec ). Времевите стойности в Go са с наносекунда точност.

За стойности на времето за отиване и връщане чрез BSON маршалинг използвайте времена, съкратени до милисекунди от епохата на Unix:

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

Можете също да използвате Time.Truncate метод:

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

Този подход разчита на факта, че епохата на Unix и нулевото време на Go се различават с цял брой милисекунди.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB предоставя основна система за удостоверяване. Променен ли е във версия 2.2.3?

  2. Някакви подробни и конкретни причини защо MongoDB е много по-бърз от SQL DB?

  3. Проверете съществуването на колекция в MongoDB

  4. Mongoose поддържа ли метода на Mongodb `findAndModify`?

  5. MongoDB и големи набори от данни при използване на модел на хранилище