¿Cómo comparo las fechas de los datos de Twitter almacenados en MongoDB a través de Pymongo?

StackOverflow https://stackoverflow.com/questions/8813539

Pregunta

¿Las fechas se almacenan en los campos 'creation_at' organizados a los objetos de fecha y hora de Python a través de Pymongo, o tengo que reemplazar manualmente las cadenas de texto con objetos de fecha de Python? es decir

¿Cómo convierto una propiedad en MongoDB del tipo de texto al tipo de fecha?

Parece muy antinatural que tenga que reemplazar las cadenas de fecha con objetos de fecha de Python, por lo que estoy haciendo la pregunta.

Me gustaría escribir consultas que muestren los tweets de los últimos tres días. Por favor, avíseme si hay una forma elegante de hacer esto. ¡Gracias!

¿Fue útil?

Solución

Puede analizar las marcas de tiempo creadas de Twitter a Python a veces como así:

import datetime, pymongo
created_at = 'Mon Jun 8 10:51:32 +0000 2009' # Get this string from the Twitter API
dt = datetime.strptime(created_at, '%a %b %d %H:%M:%S +0000 %Y')

e inserte en su colección Mongo como esta:

connection = pymongo.Connection('mymongohostname.com')
connection.my_database.my_collection.insert({
    'created_at': dt,
    # ... other info about the tweet ....
}, safe=True)

Y finalmente, para obtener tweets en los últimos tres días, lo más nuevo primero:

three_days_ago = datetime.datetime.utcnow() - datetime.timedelta(days=3)
tweets = list(connection.my_database.my_collection.find({
    'created_at': { '$gte': three_days_ago }
}).sort([('created_at', pymongo.DESCENDING)]))

Otros consejos

1) Pruébelo y vea :-)

2) Si está utilizando Pymongo, y establece un campo para ser igual a un objeto de DateTime de Python, entonces lo almacenará en el formato BSON adecuado y le devolverá los objetos de fecha y devolución cuando lo consulte. El objetivo de Pymongo realmente es trabajar en objetos nativos de Python. Realmente no establece fechas en el formato BSON con $ fecha. Lo hace bajo el capó. Dicho esto, no estoy seguro de cómo Pymongo sabría reunir una cita para usted, sin la capacidad de decir que es una fecha.

3) Si sus valores ya están en MongoDB como cadenas sin procesar, entonces necesitaría convertirlos usted mismo en el lado del cliente usando el formato de cadena: http://docs.python.org/library/datetime.html#strftime-strptime-behavior

Editar: si desea ejecutar una función en MongoDB que convierta las fechas de su cadena hasta los objetos de la fecha:

¿Cómo convierto una propiedad en MongoDB del tipo de texto al tipo de fecha?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top