Dodaję wartość daty w kolekcji MongoDB jako część mapy-zredukować połączenia:Umieszczenie obiektu Date do MongoDB, wracając pływaka podczas odpytywania z pymongo
day = Date.UTC(this.time.getFullYear(), this.time.getMonth(), this.time.getDate());
emit({ user : this.user, day : day }, { count : 1 });
Kiedy później tego zapytania kolekcja w powłoce Mongo Widzę:
{ "_id" : { "user" : "assaf", "day" : 1331769600000 }, "value" : { "count" : 15 } }
{ "_id" : { "user" : "assaf", "day" : 1331856000000 }, "value" : { "count" : 57 } }
Jakoś data wygląda jak liczba całkowita - myślę, że jest to jakaś reprezentacja sygnatury czasowej. Gdybym to zrobić:
PRIMARY> new Date(db.my_collection.find()[0]["_id"]["day"])
wrócę poprawną datę:
ISODate("2012-03-19T00:00:00Z")
Moje pytanie brzmi, jak zrobić to samo w pymongo. Jeśli mogę uruchomić żadnej kwerendy w powyższej kolekcji, pymongo zwraca dokumenty, w którym wartość day
jako typu float o tej samej wartości, co datownika:
dict: {u'_id': {u'user': u'ariel', u'day': 1332115200000.0}, u'value': {u'count': 99.0}}
Jak włączyć ten znacznik czasu w Pythonie datetime
?
+1, ale powinieneś zmienić '1000' na' 1000.0' lub dodać 'from __future__ import division', aby uniknąć dzielenia liczby całkowitej, co zabija milisekundową dokładność znacznika czasu. – Cameron
To działa. Każdy pomysł, dlaczego informacje o typie są tracone po drodze? –
Och, czekaj, wartość z pymongo jest zmiennoprzecinkową - więc mój poprzedni komentarz nie ma zastosowania. Mimo to, lepiej jest być wyraźnym niż polegać na wiedzy o tym, jak sądzę. – Cameron