Antworten:
Der beste Weg ist nativer JavaScript speichern Date - Objekte , die auf der Karte BSON nativen Date - Objekte .
> 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") }
Der native Typ unterstützt eine ganze Reihe nützlicher Methoden , die Sie beispielsweise in Ihren Jobs zur Kartenreduzierung verwenden können.
Bei Bedarf können Sie Date
Objekte einfach mit der Methode bzw. dem Konstruktor in und aus Unix-Zeitstempeln 1) konvertieren .getTime()
Date(milliseconds)
1) Genau genommen wird der Unix-Zeitstempel in Sekunden gemessen . Das JavaScript-Datumsobjekt misst seit der Unix-Epoche in Millisekunden .
389
und 240
sind die Millisekunden des Zeitstempels. Die Z
im String - Format erzählt MongoDB , dass der Zeitstempel Sie ist in UTC zur Verfügung gestellt. Wenn Sie es dann zurücklesen, konvertiert Ihre Anwendung es wahrscheinlich in Ihre lokale Zeitzone, sodass es so aussieht, als hätte sich die Zeit geändert. Aber die Zeit ist immer noch dieselbe, sie wird nur aus einer anderen Zeitzonenperspektive interpretiert. Zum Beispiel 12:50:42Z
und 13:50:42+01:00
repräsentieren den gleichen Zeitpunkt.
21:56:03+01:00
jetzt in MEZ und Sie einfügen new Date()
, dann MongoDB könnte repräsentieren sie als 20:56:03Z
. Wenn Sie es jedoch zurücklesen und in Ihrer Anwendung mithilfe der lokalen Zeitzoneneinstellungen (MEZ) anzeigen, wird es 21:56:03
erneut gelesen .
Wenn Sie also die Einfügezeit benötigen, ist sie bereits vorhanden:
Melden Sie sich bei mongodb shell an
ubuntu@ip-10-0-1-223:~$ mongo 10.0.1.223
MongoDB shell version: 2.4.9
connecting to: 10.0.1.223/test
Erstellen Sie Ihre Datenbank, indem Sie Elemente einfügen
> db.penguins.insert({"penguin": "skipper"})
> db.penguins.insert({"penguin": "kowalski"})
>
Machen wir diese Datenbank zu der, in der wir uns gerade befinden
> use penguins
switched to db penguins
Holen Sie sich die Zeilen zurück:
> db.penguins.find()
{ "_id" : ObjectId("5498da1bf83a61f58ef6c6d5"), "penguin" : "skipper" }
{ "_id" : ObjectId("5498da28f83a61f58ef6c6d6"), "penguin" : "kowalski" }
Holen Sie sich jede Zeile im Format JJJJ-MM-TT 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
Wenn dieser letzte Einzeiler Sie verwirrt, habe ich eine Anleitung, wie das hier funktioniert: https://stackoverflow.com/a/27613766/445131
_id
?
_id.getTimestamp()
.