J'ai vu utiliser des chaînes, des horodatages entiers et des objets mongo datetime.
177
Le meilleur moyen est de stocker des objets Date JavaScript natifs , qui correspondent aux objets Date natifs BSON .
> db.test.insert({date: ISODate()})
> db.test.insert({date: new Date()})
> db.test.find()
{ "_id" : ObjectId("..."), "date" : ISODate("2014-02-10T10:50:42.389Z") }
{ "_id" : ObjectId("..."), "date" : ISODate("2014-02-10T10:50:57.240Z") }
Le type natif prend en charge toute une gamme de méthodes utiles prêtes à l'emploi, que vous pouvez utiliser dans vos travaux de réduction de carte, par exemple.
Si vous en avez besoin, vous pouvez facilement convertir des Date
objets vers et depuis les horodatages Unix 1) , en utilisant respectivement la getTime()
méthode et le Date(milliseconds)
constructeur.
1) À proprement parler, l'horodatage Unix est mesuré en secondes . L'objet Date JavaScript mesure en millisecondes depuis l'époque Unix.
389
et240
sont les millisecondes de l'horodatage. LeZ
dans le format de la chaîne indique que l'horodatage MongoDB vous avez fourni est en UTC. Si vous le relisez ensuite, votre application le convertit probablement dans votre fuseau horaire local , ce qui donne l'impression que l'heure a changé. Mais l'heure est toujours la même, elle n'est interprétée que dans une perspective de fuseau horaire différente. Par exemple,12:50:42Z
et13:50:42+01:00
représentent le même moment dans le temps.21:56:03+01:00
maintenant dans CET et que vous inséreznew Date()
, alors MongoDB pourrait le représenter comme20:56:03Z
. Mais lorsque vous le relisez et l'affichez dans votre application en utilisant les paramètres de fuseau horaire local (CET), il sera lu à21:56:03
nouveau.Un horodatage est déjà dans l'objet _id, représentant l'heure d'insertion
Donc, si le temps d'insertion est ce dont vous avez besoin, il est déjà là:
Connectez-vous au shell mongodb
Créez votre base de données en insérant des éléments
Faisons de cette base de données celle sur laquelle nous nous trouvons actuellement
Récupérez les lignes:
Obtenez chaque ligne au format aaaa-MM-jj HH: mm: ss:
Si ce dernier one-liner vous confond, j'ai une procédure pas à pas sur comment cela fonctionne ici: https://stackoverflow.com/a/27613766/445131
la source
_id
?_id.getTimestamp()
.