我正在為 mongo 構建正則運算式查詢
s_list = [f"/^.*{x}.*/i" for x in s_list]
print(s_list)
query: dict = resumes_collection.find({
"first_name": {
"$in": s_list
},
})
這個正則運算式應該獲取所有資料,無論是否區分大小寫等,如果我們loop在資料庫中有輸入^.*OP.*/i,或者在任何一種情況下^.*oO.*/i都將回傳loop目前這不回傳任何內容。
https://www.mongodb.com/docs/manual/reference/operator/query/regex/
檔案供參考。使用motor與mongodb互動,motor在引擎蓋下運行pymongo
uj5u.com熱心網友回復:
您可以使用
query: dict = resumes_collection.find({
"first_name": {
"$regex": re.compile("|".join(s_list), re.I)
},
})
筆記:
[f"/^.*{x}.*/i" for x in s_list]生成一個要被決議為正則運算式的字串串列,但運算$in符會將它們視為字串/.../Python 不支持正則運算式文字表示法,您需要使用定義正則運算式物件re.compile"|".join(s_list)從使用OR 運算子s_list連接它們的所有字串中生成單個模式。|您不需要匹配整個字串,.*兩邊都添加是不必要的,實際上會造成更大的傷害。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/457721.html
標籤:Python 正则表达式 mongodb nosql pymongo
