Getting timestamp from mongodb id

Viewed 61514

How do I get the timestamp from the MongoDB id?

9 Answers

Use $convert method like:

db.Items.find({}, { creationTime: {"$convert":{"input":"$_id", "to":"date"}}});

If you need to get timestamp from MongoID in a GoLang:

package main

import (
    "fmt"
    "github.com/pkg/errors"
    "strconv"
)

const (
    mongoIDLength = 24
)

var ErrInvalidMongoID = errors.New("invalid mongoID provided")

func main() {
    s, err := ExtractTimestampFromMongoID("5eea13924a04cb4b58fe31e3")
    if err != nil {
        fmt.Print(err)
        return
    }

    fmt.Printf("%T, %v\n", s, s)

    // convert to usual int
    usualInt := int(s)

    fmt.Printf("%T, %v\n", usualInt, usualInt)
}

func ExtractTimestampFromMongoID(mongoID string) (int64, error) {
    if len(mongoID) != mongoIDLength {
        return 0, errors.WithStack(ErrInvalidMongoID)
    }

    s, err := strconv.ParseInt(mongoID[0:8], 16, 0)
    if err != nil {
        return 0, err
    }

    return s, nil
}

Playground: https://play.golang.org/p/lB9xSCmsP8I

Find on mongoDB

db.books.find({}).limit(10).map(function (v) {
 let data = v
 data.my_date = v._id.getTimestamp()
 return data
})
Related