2011-08-11 5 views
3

pymongo를 사용하여 퍼지 mongodb 쿼리를 수행하고 싶습니다.pongongo를 사용하여 Mongodb에서 퍼지 쿼리를 수행하는 방법은 무엇입니까?

cond = {'date':'/.*2011-8-11.*/'} 
coll.find(cond).count() return 0; 

하지만 MongoDB를 반환 (25)에 직접 쿼리를 할; 내 검색어에 문제가 있습니까?

+0

사실 퍼지 쿼리가 아닌 정확한 일치입니다. 퍼지 검색은 solr (~ ~ term ~ 0.75 ...)의 ~ 연산자와 같이 모든 종류의 허용 가능한 근접 거리 (또는 최대 거리)를 설정할 수 있어야합니다. AFAIK는 정규 표현식이나 mongoDB에서는 가능하지 않습니다. 불행히도. – cedbeu

답변

5

pymongo의 정규식으로 검색하려면, 파이썬 정규 표현식 개체를 사용해야하며, 슬래시가 포함 된 문자열은 사용하지 않아야합니다. 위의 쿼리의 경우, pymongo 구문은 다음과 같습니다 당신이 ^를 사용하여 정규 표현식을 고정하지 않는 한

또한
import re 
# assume connection is set up, and db 
# is a pymongo.database.Database instance 
date_re = re.compile(r'2011-8-11') 
db.collection.find({'date': date_re}) 

, 당신이 (중 하나 pymongo 구문 또는 몽고 쉘 구문)을 . 문자를 필요는 없습니다 또는 $.

+9

또는 db.collection.find ({ 'date': { '$ regex': '2011-8-11'}})'를 실행하여 정규 표현식 객체를 만드는 오버 헤드를 피할 수 있습니다. – TkTech

관련 문제