ich einen Datumswert in eine MongoDB Sammlung als Teil eines Karten reduziert Gespräch hinzugefügt:Putting ein Date-Objekt in MongoDB, einen Schwimmer immer wieder, wenn sie mit pymongo Abfrage
day = Date.UTC(this.time.getFullYear(), this.time.getMonth(), this.time.getDate());
emit({ user : this.user, day : day }, { count : 1 });
Als ich dies später abfragen Sammlung in der Mongo Shell sehe ich:
{ "_id" : { "user" : "assaf", "day" : 1331769600000 }, "value" : { "count" : 15 } }
{ "_id" : { "user" : "assaf", "day" : 1331856000000 }, "value" : { "count" : 57 } }
Irgendwie sieht das Datum aus wie eine ganze Zahl - ich denke, es ist eine Zeitstempel Darstellung. Wenn ich dies tun:
PRIMARY> new Date(db.my_collection.find()[0]["_id"]["day"])
ich das richtige Datum zurück:
ISODate("2012-03-19T00:00:00Z")
Meine Frage ist, wie man das gleiche in pymongo zu tun. Wenn ich jede Abfrage auf der obigen Sammlung ausführen, pymongo Dokumente, in denen kehrt der day
Wert als Schwimmer-Typ mit dem gleichen Wert wie der Zeitstempel:
dict: {u'_id': {u'user': u'ariel', u'day': 1332115200000.0}, u'value': {u'count': 99.0}}
Wie kann ich diesen Zeitstempel in eine Python drehen datetime
?
+1, aber Sie sollten '1000' in' 1000.0' ändern oder '' from__future__ import division' hinzufügen, um eine ganzzahlige Division zu vermeiden, wodurch die Millisekunden-Genauigkeit des Zeitstempels verloren geht. – Cameron
Das funktioniert. Irgendeine Idee warum die Typinformation auf dem Weg verloren geht? –
Oh, Moment mal, der Wert von Pymongo ist ein Float - also trifft mein vorheriger Kommentar nicht zu. Dennoch, besser, um explizit zu sein, als sich darauf zu verlassen, nehme ich an. – Cameron