2011-08-11 10 views
3

pymongoを使ってファジーmongodbクエリを実行したい。pongongoを使ってMongodbでファジークエリを実行する方法は?

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

しかし、私はMongodb return 25でこのクエリを直接行います。 クエリに問題はありますか?

+0

これは実際にはあいまいなクエリではないことに注意してください...代わりに完全一致です。あいまい検索は、例えば〜の演算子のように、solr(term〜or term〜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構文またはモンゴシェル構文で).文字を必要としないことに注意してくださいまたは$

+9

また、 'db.collection.find({'date':{'$ regex': '2011-8-11'}})'を実行することで、正規表現オブジェクトを作成するオーバーヘッドを避けることができます。 – TkTech

関連する問題