2016-02-07 72 views
2

我想從Python中查詢MongoDB上的不同字段,就像在高級搜索中一樣。在PyMongo中使用正則表達式動態構建查詢

保持簡單的例子只有一個字段,如果我在Mongo上手動查詢{'Title': /my string/}我會得到預期的結果。

在Python中我做了以下內容:

query = {} 
args = request.form 
for arg in args: 
    key = "{0}".format(arg) 
    if args[arg] != "": 
    query[key] = "/" + args[arg].lower() + "/" 

但是,查詢是這樣的(注意引號):

{'Title': '/my string/'} 

所以我沒有得到任何結果。我怎樣才能實現正確的查詢?

回答

4

做一個列表:

conditions = [{field: {"$regex": value.lower()}} for field, value in args.items()] 

然後,加入與$or$and的條件(這取決於你想如何應用它們):

db.col.find({"$or": conditions})