Wie vergleiche ich Daten aus Twitter -Daten, die in MongoDB über Pymongo gespeichert sind?

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

Frage

Werden die Daten in den Feldern 'Created_at' gespeichert zu Python DateTime -Objekten über Pymongo gespeichert, oder muss ich die Textzeichenfolgen manuell durch Python -Datum -Objekte ersetzen? dh

Wie konvertiere ich eine Eigenschaft in MongoDB vom Text bis Datum?

Es scheint sehr unnatürlich, dass ich die Datumszeichenfolgen durch Python -Datumsobjekte ersetzen müsste, weshalb ich die Frage stelle.

Ich möchte Abfragen schreiben, die die Tweets aus den letzten drei Tagen anzeigen. Bitte lassen Sie mich wissen, ob es eine glatte Möglichkeit gibt, dies zu tun. Vielen Dank!

War es hilfreich?

Lösung

Sie können Twitter's Created_at -Zeitstempel an Python -DateTimes wie SO analysieren:

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')

und setzen Sie sie in Ihre Mongo -Sammlung wie folgt ein:

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

Und schließlich, um in den letzten drei Tagen Tweets zu bekommen, neueste zuerst:

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

Andere Tipps

1) Testen Sie es und sehen Sie :-)

2) Wenn Sie Pymongo verwenden und ein Feld so einstellen, dass es einem Python -DateTime -Objekt entspricht, speichert es es im richtigen BSON -Format und gibt DateTime -Objekte zurück, wenn Sie es abfragen. Der Punkt von Pymongo ist es wirklich, in einheimischen Python -Objekten zu arbeiten. Sie setzen keine Daten im BSON -Format mit $ Date fest. Es macht das unter der Motorhaube. Davon abgesehen bin ich mir nicht sicher, wie Pymongo wissen würde, dass er ein Stringdatum für Sie marschallt, ohne zu sagen, dass es ein Datum ist.

3) Wenn Ihre Werte bereits in MongoDB als rohe Zeichenfolgen sind, müssten Sie sie mit der String -Formatierung selbst auf der Client -Seite konvertieren: http://docs.python.org/library/datetime.html#strftime-strptime-behavior

Bearbeiten: Wenn Sie eine Funktion auf MongoDB ausführen möchten, die Ihre String -Daten zu Datum Objekten konvertiert:

Wie konvertiere ich eine Eigenschaft in MongoDB vom Text bis Datum?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top