Réponses:
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
et 240
sont les millisecondes de l'horodatage. Le Z
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
et 13: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érez new Date()
, alors MongoDB pourrait le représenter comme 20: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.
Donc, si le temps d'insertion est ce dont vous avez besoin, il est déjà là:
Connectez-vous au shell mongodb
ubuntu@ip-10-0-1-223:~$ mongo 10.0.1.223
MongoDB shell version: 2.4.9
connecting to: 10.0.1.223/test
Créez votre base de données en insérant des éléments
> db.penguins.insert({"penguin": "skipper"})
> db.penguins.insert({"penguin": "kowalski"})
>
Faisons de cette base de données celle sur laquelle nous nous trouvons actuellement
> use penguins
switched to db penguins
Récupérez les lignes:
> db.penguins.find()
{ "_id" : ObjectId("5498da1bf83a61f58ef6c6d5"), "penguin" : "skipper" }
{ "_id" : ObjectId("5498da28f83a61f58ef6c6d6"), "penguin" : "kowalski" }
Obtenez chaque ligne au format aaaa-MM-jj HH: mm: ss:
> db.penguins.find().forEach(function (doc){ d = doc._id.getTimestamp(); print(d.getFullYear()+"-"+(d.getMonth()+1)+"-"+d.getDate() + " " + d.getHours() + ":" + d.getMinutes() + ":" + d.getSeconds()) })
2014-12-23 3:4:41
2014-12-23 3:4:53
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
_id
?
_id.getTimestamp()
.