2016-11-25 28 views
1

MongoDBの$ inコマンドでregexを使用しようとしています。しかし、パターン正規表現はドキュメントごとに許されます。私はこれをしようとすると、私は、文字列のリストで、このようなパターンを使用しようとすると

、それは

collection.find({"categories": { "$in": ["/^item1$/i","/^item2$/i","/^item3$/i"] } },{"_id":0}).count() 

を失敗したが、それは

collection.find({"categories": { "$in": [/^item1$/i,/^item2$/i,/^item3$/i] } }).count() 

なぜこれが動作しますか?私はPyMongoを使用しており、文字列のリストを渡す必要があります。それ、どうやったら出来るの?

答えて

0

PyMongoでは、それぞれのオブジェクトをそれぞれre.compile()here.のように)を使ってコンパイルすることで、正規表現オブジェクトのリストを作成する必要がありますが、それは非常に非効率的です。

代わりに、文字クラスを使用して正規表現を書く必要があります。 demo

import re 

pat = re.compile(r'^item[1-3]$') 
collection.find({'categories': pat})