La mejor manera de almacenar fecha / hora en mongodb

He visto usar cadenas, marcas de tiempo enteras y objetos mongo datetime.

La mejor forma es almacenar objetos JavaScript Fecha nativos, que se asignan a objetos Fecha nativos 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") } 

El tipo nativo admite toda una gama de métodos útiles listos para usar, que puede usar en su trabajo de reducción de mapas, por ejemplo.

Si es necesario, puede convertir fácilmente objetos de Date ay desde las marcas de tiempo de Unix 1) , utilizando el método getTime() y el constructor de Date(milliseconds) , respectivamente.

1) Estrictamente hablando, la marca de tiempo de Unix se mide en segundos . El objeto Fecha de JavaScript se mide en milisegundos desde la época de Unix.

Una marca de fecha ya está en el objeto _id, lo que representa el tiempo de inserción

Entonces, si el tiempo de inserción es lo que necesita, ya está allí:

Iniciar sesión en mongodb shell

 ubuntu@ip-10-0-1-223:~$ mongo 10.0.1.223 MongoDB shell version: 2.4.9 connecting to: 10.0.1.223/test 

Crea tu base de datos insertando elementos

 > db.penguins.insert({"penguin": "skipper"}) > db.penguins.insert({"penguin": "kowalski"}) > 

Hagamos de esa base de datos en la que estamos ahora

 > use penguins switched to db penguins 

Recupera las filas:

 > db.penguins.find() { "_id" : ObjectId("5498da1bf83a61f58ef6c6d5"), "penguin" : "skipper" } { "_id" : ObjectId("5498da28f83a61f58ef6c6d6"), "penguin" : "kowalski" } 

Obtenga cada fila en formato aaaa-MM-dd 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 ese último one-liner te confunde, tengo un tutorial sobre cómo funciona esto aquí: https://stackoverflow.com/a/27613766/445131

Protip, MongoDB es la mejor base de datos porque MongoDB es a escala web: https://www.youtube.com/watch?v=b2F-DItXtZs