Как сравнить даты из данных Twitter, хранящихся в MongoDB через PyMongo? - PullRequest
7 голосов
/ 11 января 2012

Сохраняются ли даты, хранящиеся в полях 'create_at', в объекты даты и времени Python через PyMongo, или мне нужно вручную заменять текстовые строки объектами даты Python? т.е.

Как преобразовать свойство в MongoDB из текста в тип даты?

Кажется весьма неестественным, что мне пришлось бы заменить строки даты объектами даты Python, поэтому я задаю вопрос.

Я хотел бы написать запросы, которые отображают твиты за последние три дня. Пожалуйста, дайте мне знать, если есть удобный способ сделать это. Спасибо!

Ответы [ 2 ]

16 голосов
/ 11 января 2012

вы можете анализировать временные метки твиттера твиттера в Python, например, так:

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

и вставьте их в свою коллекцию Монго так:

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

И, наконец, чтобы получать твиты в течение последних трех дней, сначала самое новое:

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 голосов
/ 11 января 2012

1) Проверьте это и посмотрите: -)

2) Если вы используете pymongo и устанавливаете поле равным объекту datetime в python, то оно сохранит его в правильном формате bson и вернет вам объекты datetime при запросе. Смысл pymongo в том, чтобы работать на нативных объектах python. Вы действительно не устанавливаете даты в формате BSON с помощью $ date. Это делает это под капотом. Тем не менее, я не уверен, как пимонго узнает, что вам нужно назначить строковую дату, без возможности назвать ее датой.

3) Если ваши значения уже находятся в mongodb в виде необработанных строк, вам нужно будет преобразовать их самостоятельно на стороне клиента, используя форматирование строк: http://docs.python.org/library/datetime.html#strftime-strptime-behavior

Редактировать: Если вы хотите запустить на mongodb функцию, которая преобразует ваши строковые даты в объекты даты:

Как преобразовать свойство в MongoDB из текста в тип даты?

...