estoy añadiendo un valor de fecha en una colección MongoDB como parte de un mapa a reducir la llamada:colocación de un objeto Fecha en MongoDB, volviendo un flotador al consultar con pymongo
day = Date.UTC(this.time.getFullYear(), this.time.getMonth(), this.time.getDate());
emit({ user : this.user, day : day }, { count : 1 });
Cuando más tarde consultar esta colección en el shell de Mongo Veo:
{ "_id" : { "user" : "assaf", "day" : 1331769600000 }, "value" : { "count" : 15 } }
{ "_id" : { "user" : "assaf", "day" : 1331856000000 }, "value" : { "count" : 57 } }
De alguna manera la fecha parece un número entero - Supongo que es una representación de marca de tiempo. Si hago esto:
PRIMARY> new Date(db.my_collection.find()[0]["_id"]["day"])
que vuelva la fecha correcta:
ISODate("2012-03-19T00:00:00Z")
Mi pregunta es cómo hacer lo mismo en pymongo. Si me quedo cualquier consulta en la colección anterior, pymongo devuelve los documentos en los que el valor day
como un tipo flotador con el mismo valor que la marca de tiempo:
dict: {u'_id': {u'user': u'ariel', u'day': 1332115200000.0}, u'value': {u'count': 99.0}}
¿Cómo se activa esta marca de tiempo en un pitón datetime
?
+1, pero debe cambiar '1000' por' 1000.0' o agregar 'desde __future__ división de importación' para evitar la división de enteros, que mata la precisión en milisegundos de la marca de tiempo. – Cameron
Esto funciona. ¿Alguna idea de por qué la información del tipo se pierde en el camino? –
Oh, espera, el valor de pymongo es flotante, por lo que mi comentario anterior no se aplica. Aún así, es mejor ser explícito que confiar en el conocimiento de eso, supongo. – Cameron