使用pymongo执行正则expression式查询
我正在尝试使用pomongo对mongodb服务器执行正则expression式查询。 文档结构如下
{ "files": [ "File 1", "File 2", "File 3", "File 4" ], "rootFolder": "/Location/Of/Files" }
我想获得所有匹配模式*文件的文件。 我尝试这样做
db.collectionName.find({'files':'/^File/'})
然而,我没有得到任何回报,我错过了什么,因为根据mongodb文档,这应该是可能的。 如果我在mongo控制台执行查询,它工作正常,这是否意味着api不支持它,或者我只是不正确地使用它
如果你想包含正则expression式选项(比如忽略大小写),试试这个:
import re regx = re.compile("^foo", re.IGNORECASE) db.users.find_one({"files": regx})
原来,正则expression式search在pymongo中做的有点不同,但同样简单。
正则expression式完成如下:
db.collectionname.find({'files':{'$regex':'^File'}})
这将匹配具有文件属性的所有文档,其中的文件以文件开头
import re def get_pattern_query(pattern,starting_with=False,ending_with=False,ignore_case=False): start = '^' if starting_with else '.*' end = '$' if ending_with else '.*' pattern = start + re.escape(pattern) + end return re.compile(pattern, re.IGNORECASE) if ignore_case else re.compile(pattern)
在编译之前转义模式处理所有字符。