2012-01-11 2 views
7

'created_at'필드에 저장된 날짜가 PyMongo를 통해 Python datetime 객체에 정렬되어 있습니까? 아니면 수동으로 텍스트 문자열을 Python Date 객체로 바꾸어야합니까? 즉MongoDB에 저장된 Twitter 데이터를 PyMongo를 통해 어떻게 비교합니까?

How do I convert a property in MongoDB from text to date type?

그것은 내가 질문을 부탁 해요 이유입니다, 파이썬 날짜 개체 날짜 문자열을 교체해야 할 가능성이 매우 부 자연스럽게 보인다.

지난 3 일간의 트윗을 표시하는 쿼리를 작성하고 싶습니다. 이 작업을 수행하는 매끄러운 방법이 있다면 알려주십시오. 감사!

+0

은 아마 당신이 사용하는 매핑에 따라 달라집니다 . 데이터베이스에 어떤 내용이 기록되어 있는지 확인할 수 있습니까? – Thilo

답변

16
당신과 같이 파이썬 날짜 시간에 트위터의 created_at 타임 스탬프를 분석 할 수

:

최신 첫째,

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

그리고 마지막으로, 지난 3 일 이내에 트윗을 얻을 :

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

이처럼 몽고 수집에 삽입

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

1)를 테스트하고 pymongo를 사용하고 있고이 필드 파이썬 날짜 객체와 동일하게 설정하면

2) 다음 적절한 bson 형식으로 저장한다 :-) 참조 쿼리 할 때 Datetime 개체를 다시 사용자에게 반환합니다. pymongo의 핵심은 실제로 원시 파이썬 객체에서 작업하는 것입니다. $ date를 사용하여 BSON 형식으로 날짜를 설정하지 마십시오. 그것은 두포 밑에서 그것을합니다. 그 말은, pymongo가 어떻게 날짜를 말할 수있는 능력없이 문자열 날짜를 마샬링 하는지를 알지 못합니다.

3) 값은 원시 문자열로 MongoDB를 사용중인 경우, 다음 문자열 서식을 사용하여 클라이언트 측에서 그들에게 자신을 변환해야합니다 : http://docs.python.org/library/datetime.html#strftime-strptime-behavior

편집 : 당신이 MongoDB를에 함수를 실행하려면 그 날짜 객체에 문자열을 날짜로 변환 :

How do I convert a property in MongoDB from text to date type?