我正在嘗試使用pymongo對mongodb服務器執行正則表達式查詢。文件結構如下{ "files": [ "File 1", "File 2", "File 3", "File 4" ], "rootFolder": "/Location/Of/Files"}我想獲取所有與* File模式匹配的文件。我試圖這樣做db.collectionName.find({'files':'/^File/'})但是我什么也沒有得到,我是否缺少任何東西,因為根據mongodb docs,這應該是可能的。如果我在mongo控制臺中執行查詢,則可以正常工作,這是否意味著api不支持它,或者我只是錯誤地使用了它
3 回答

慕勒3428872
TA貢獻1848條經驗 獲得超6個贊
如果要包括正則表達式選項(例如,忽略大小寫),請嘗試以下操作:
import re
regx = re.compile("^foo", re.IGNORECASE)
db.users.find_one({"files": regx})

Helenr
TA貢獻1780條經驗 獲得超4個贊
事實證明,在pymongo中進行正則表達式搜索的方式略有不同,但同樣簡單。
正則表達式如下:
db.collectionname.find({'files':{'$regex':'^File'}})
這將匹配所有具有files屬性的文檔,該文檔中包含以File開頭的項

烙印99
TA貢獻1829條經驗 獲得超13個贊
為了避免雙重編譯,您可以使用PyMongo隨附的bson regex包裝器:
>>> regx = bson.regex.Regex('^foo')
>>> db.users.find_one({"files": regx})
正則表達式只是存儲字符串而不嘗試對其進行編譯,因此find_one可以將參數檢測為“ Regex”類型并形成適當的Mongo查詢。
我覺得這種方式比其他最佳答案略帶Pythonic,例如:
>>> db.collectionname.find({'files':{'$regex':'^File'}})
如果您打算使用正則表達式查詢,則值得閱讀bson Regex文檔,因為有一些注意事項。
- 3 回答
- 0 關注
- 1918 瀏覽
添加回答
舉報
0/150
提交
取消