3
我想用pymongo做一個模糊的mongodb查詢。如何在Mongodb中使用pymongo進行模糊查詢?
cond = {'date':'/.*2011-8-11.*/'}
coll.find(cond).count() return 0;
但我直接在Mongodb上執行此查詢返回25; 我的查詢有什麼問題嗎?
我想用pymongo做一個模糊的mongodb查詢。如何在Mongodb中使用pymongo進行模糊查詢?
cond = {'date':'/.*2011-8-11.*/'}
coll.find(cond).count() return 0;
但我直接在Mongodb上執行此查詢返回25; 我的查詢有什麼問題嗎?
要使用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語法),除非你使用錨你^
正則表達式或$
。
或者,您可以通過執行'db.collection.find({'date':{'$ regex':'2011-8-11'}})'來避免創建正則表達式對象的開銷。 – TkTech
請注意,這不是一個真正的模糊查詢......它是一個確切的匹配,而不是。模糊搜索應該能夠設置任何類型的最小可接受接近度(或最大距離),例如與solr中的〜運算符(術語〜或術語〜0.75 ...)一樣。不幸的是,這不可能與正則表達式和mongoDB。 – cedbeu