Как сравнить даты из данных Twitter, хранящихся в MongoDB через Pymongo?
Вопрос
Сохраняются ли даты в поля «созданный_ат», становясь на 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 из типа текста в тип текста?