Come faccio a confrontare le date a partire dai dati di Twitter archiviati in MongoDB via PyMongo?

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

Domanda

Le date memorizzate nei campi 'created_at' marshalling a Python datetime oggetti tramite PyMongo, o devo sostituire manualmente le stringhe di testo con Python oggetti Date? cioè

Come faccio la conversione di un immobile in MongoDB dal testo al tipo di data?

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 query di scrittura che visualizzano i tweets degli ultimi tre giorni. Per favore fatemi sapere se c'è un modo chiazza di petrolio di fare questo. Grazie!

È stato utile?

Soluzione

è 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, prima 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)]))

Altri suggerimenti

1) test it out e vedere: -)

2) Se si utilizza pymongo, e si imposta un campo di essere uguale a un pitone datetime oggetto, allora sarà memorizzare nel formato corretto BSON e tornare datetime oggetti di nuovo voi quando si esegue una query di esso. Il punto di pymongo è davvero di lavorare in oggetti Python native. Non è davvero di inserire le date nel formato BSON con $ data. Lo fa sotto il cofano. Detto questo, io non sono sicuro di come pymongo saprebbe maresciallo una data stringa per voi, senza la possibilità di dire la sua data di a.

3) se i valori sono già in MongoDB come stringhe prime, allora si avrebbe bisogno di convertire da soli sul lato client utilizzando la formattazione delle 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 di oggetti di data:

Come faccio la conversione di un immobile in MongoDB dal testo al tipo di data?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top