67 votes

Obtenir un horodatage à partir d'un identifiant mongodb

Comment obtenir l'horodatage à partir de l'identifiant MongoDB ?

1 votes

Juste pour info, la deuxième réponse devrait probablement être la réponse acceptée. Elle est implémentée dans tout pilote JS qui utilise le pilote JS natif de MongoDB (c'est-à-dire tous ceux que je connais).

0 votes

Je ne suis pas d'accord avec Dropped.on.Caprica, la réponse acceptée ne nécessite pas d'avoir une bibliothèque pour obtenir la date, donc pour moi c'est mieux.

2 votes

Dans mon cas, j'ai dû faire l'analyse de l'horodatage côté client, et non pas là où se trouve le pilote JS pour MongoDB, donc pour moi aussi la réponse actuellement acceptée est la meilleure. Mais il est bon de connaître les *. getTimestamp aussi, donc +1 aux deux :)

2voto

Alok Deshwal Points 914

En la documentation officielle :

ObjectId('mongodbIdGoesHere').getTimestamp();

1voto

KorbenDallas Points 401

Si vous avez besoin d'obtenir l'horodatage de MongoID dans un 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
}

Terrain de jeux : https://play.golang.org/p/lB9xSCmsP8I

1voto

Mohammed Osman Points 548

Utilisez $convert méthode comme :

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

0voto

Infomaster Points 321

Trouver sur mongoDB

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X