Meilleure façon de stocker la date / heure dans mongodb
J'ai vu utiliser des chaînes, des horodatages entiers et des objets datetime mongo.
2 réponses
Le meilleur moyen est de stocker des objets JavaScript natifs Date , 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 tâches map-reduce, par exemple.
Si vous en avez besoin, vous pouvez facilement convertir les objets Date vers et depuis les horodatages Unix1), en utilisant la méthode getTime() et le constructeur Date(milliseconds), respectivement.
1) Strictement parlant, L'horodatage Unix est mesuré en secondes . L'objet Date JavaScript mesure en millisecondes depuis L'époque Unix.
Un datestamp 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à:
Connexion 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 sommes maintenant
> use penguins
switched to db penguins
Récupérer les lignes:
> db.penguins.find()
{ "_id" : ObjectId("5498da1bf83a61f58ef6c6d5"), "penguin" : "skipper" }
{ "_id" : ObjectId("5498da28f83a61f58ef6c6d6"), "penguin" : "kowalski" }
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 la façon dont cela fonctionne ici: https://stackoverflow.com/a/27613766/445131
Protip, MongoDB est le meilleur DB car MongoDB est à l'échelle web: https://www.youtube.com/watch?v=b2F-DItXtZs