2011-08-11 173 views
3

我想用pymongo做一個模糊的mongodb查詢。如何在Mongodb中使用pymongo進行模糊查詢?

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

但我直接在Mongodb上執行此查詢返回25; 我的查詢有什麼問題嗎?

+0

請注意,這不是一個真正的模糊查詢......它是一個確切的匹配,而不是。模糊搜索應該能夠設置任何類型的最小可接受接近度(或最大距離),例如與solr中的〜運算符(術語〜或術語〜0.75 ...)一樣。不幸的是,這不可能與正則表達式和mongoDB。 – cedbeu

回答

5

要使用pymongo的正則表達式進行搜索,您需要使用python正則表達式對象,而不是使用斜槓的字符串。對於以上查詢,該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語法或蒙戈shell語法),除非你使用錨你^正則表達式或$

+9

或者,您可以通過執行'db.collection.find({'date':{'$ regex':'2011-8-11'}})'來避免創建正則表達式對象的開銷。 – TkTech

相關問題