Il modo migliore per memorizzare data / ora in mongodb

Ho visto l’utilizzo di stringhe, timestamp interi e oggetti datetime mongo.

Il modo migliore è quello di memorizzare oggetti Date nativi di JavaScript, che si mappano su oggetti Date nativi 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") } 

Il tipo nativo supporta una vasta gamma di metodi utili pronti all’uso, che puoi utilizzare nella tua mappa, ad esempio, per ridurre i lavori.

Se è necessario, è ansible convertire facilmente gli oggetti Date in e da timestamp Unix 1) , utilizzando rispettivamente il metodo getTime() e il costruttore Date(milliseconds) .

1) A rigor di termini, il timestamp Unix viene misurato in secondi . L’object Date JavaScript misura in millisecondi dall’epoca Unix.

Un datestamp si trova già nell’object _id, che rappresenta il tempo di inserimento

Quindi se il tempo di inserimento è quello che ti serve, è già lì:

Accedi alla shell mongodb

 [email protected]:~$ mongo 10.0.1.223 MongoDB shell version: 2.4.9 connecting to: 10.0.1.223/test 

Crea il tuo database inserendo elementi

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

Facciamo diventare quel database quello in cui ci troviamo ora

 > use penguins switched to db penguins 

Ottieni indietro le righe:

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

Ottieni ogni riga nel formato aaaa-MM-gg 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 

Se l’ultimo one-liner ti confonde, ho una panoramica su come funziona qui: https://stackoverflow.com/a/27613766/445131

Protip, MongoDB è il miglior DB perché MongoDB è su scala web: https://www.youtube.com/watch?v=b2F-DItXtZs