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