Как сравнить даты из данных Twitter, хранящихся в MongoDB через Pymongo?

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

Вопрос

Сохраняются ли даты в поля «созданный_ат», становясь на Python DateTime Objects через Pymongo, или мне приходится вручную заменить текстовые строки на объекты Python Date? т.е.

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

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

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

Это было полезно?

Решение

Вы можете проанализировать Twitter's Centre_at TimeStass, чтобы Python DateTimes, как SO:

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

и вставьте их в свою коллекцию Mongo, как это:

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

Другие советы

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

2) Если вы используете Pymongo и установите поле, чтобы быть равным объекту Python DateTime, то он сохранит его в соответствующем формате BSON и возвращает объекты DateTime обратно вам, когда вы запросите. Смысл Пимонго действительно состоит в том, чтобы работать в нативных объектах Python. Вы действительно не устанавливаете даты в формате BSON с датой $. Это делает это под капюшоном. При этом я не уверен, как Питонго знает, чтобы маршала строковую дату для вас, без возможности сказать, что это дата.

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

РЕДАКТИРОВАТЬ: Если вы хотите запустить функцию на MongoDB, которая преобразует ваши строковые даты на сегодняшний день:

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top