使用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) 

在编译之前转义模式处理所有字符。