2012-01-11 12 views
7

Le date memorizzate nei campi 'created_at' vengono sottoposte a marshalling in oggetti datetime Python tramite PyMongo oppure devo sostituire manualmente le stringhe di testo con gli oggetti Date Python? vale a direCome confrontare le date dei dati di Twitter memorizzati in MongoDB tramite PyMongo?

How do I convert a property in MongoDB from text to date type?

Sembra altamente innaturale che avrei dovuto sostituire le stringhe di data con Python oggetti di data, ed è per questo che sto chiedendo la questione.

Vorrei scrivere query che visualizzano i tweet degli ultimi tre giorni. Per favore fatemi sapere se c'è un modo perfetto per farlo. Grazie!

+0

dipende probabilmente sulle mappature che si usa . Puoi semplicemente controllare nel database cosa finisce per essere scritto lì? – Thilo

risposta

16

è possibile analizzare timestamp created_at di Twitter per datetimes Python in questo modo:

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 inserirli nella tua collezione Mongo in questo modo:

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

E, infine, per ottenere i tweet negli ultimi tre giorni, i più nuovi:

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)])) 
0

1) Metti alla prova fuori e vedere :-)

2) Se si utilizza pymongo, e si imposta un campo di essere uguale a un oggetto python datetime, allora sarà memorizzare nel formato corretto BSON e restituire oggetti datetime a te quando lo si interroga. Il punto di pymongo è davvero quello di lavorare in oggetti Python nativi. Non si impostano realmente le date nel formato BSON con $ date. Lo fa sotto il cofano. Detto questo, non sono sicuro di come Pymongo saprebbe organizzare una data per te, senza la possibilità di dire una data.

3) Se si valori sono già in MongoDB come stringhe prime, allora si avrebbe bisogno di convertire da soli sul lato client utilizzando formattazione di stringhe: http://docs.python.org/library/datetime.html#strftime-strptime-behavior

Edit: Se si desidera eseguire una funzione su MongoDB che converte le date di stringa per oggetti di data:

How do I convert a property in MongoDB from text to date type?

Problemi correlati