Comment puis-je comparer les dates à partir des données stockées dans Twitter MongoDB via PyMongo?

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

Question

Les dates stockées dans les « champs » created_at à Python datetime marshalées objets via PyMongo, ou dois-je remplacer manuellement les chaînes de texte avec Python objets Date? à savoir

Comment puis-je convertir une propriété en MongoDB du texte à type de date?

Il semble que je serais obligé de bien naturel que doivent remplacer les chaînes de date avec des objets de date Python, ce qui est la raison pour laquelle je pose la question.

Je voudrais des requêtes d'écriture qui affichent les tweets des trois derniers jours. S'il vous plaît laissez-moi savoir s'il y a un moyen slick de le faire. Merci!

Était-ce utile?

La solution

vous pouvez analyser les horodateurs created_at de Twitter à Python datetimes comme ceci:

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

et les insérer dans votre collection Mongo comme ceci:

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

Enfin, pour obtenir des tweets au cours des trois derniers jours, le plus récent en premier:

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

Autres conseils

1) Test et voir: -)

2) Si vous utilisez pymongo, et vous définissez un champ égale à un python datetime objet, il va stocker dans le format approprié BSON et retourner des objets datetime de nouveau à vous lorsque vous interrogez cela. Le point de pymongo est vraiment travailler dans les objets Python natifs. Vous ne définissez pas vraiment les dates dans le format BSON avec $ ce jour. Il le fait sous le capot. Cela étant dit, je ne sais pas comment pymongo sauriez au maréchal une date de chaîne pour vous, sans la possibilité de dire la date d'un.

3) Si les valeurs que vous êtes déjà en mongodb sous forme de chaînes brutes, alors vous devez les convertir vous-même sur le côté client à l'aide le formatage de chaîne: http://docs.python.org/library/datetime.html#strftime-strptime-behavior

Edit: Si vous voulez exécuter une fonction sur MongoDB qui convertit vos dates de chaîne à des objets de date:

Comment puis-je convertir une propriété en MongoDB du texte à type de date?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top