我正在尝试使用pymongo对mongodb服务器执行正则表达式查询.文件结构如下
{ "files": [ "File 1", "File 2", "File 3", "File 4" ], "rootFolder": "/Location/Of/Files" }
我想获得与模式*文件匹配的所有文件.我试过这样做
db.collectionName.find({'files':'/^File/'})
然而我什么也得不回来,我错过了什么,因为根据mongodb文档,这应该是可能的.如果我在mongo控制台中执行查询它工作正常,这是否意味着api不支持它或我只是错误地使用它
如果要包含正则表达式选项(例如忽略大小写),请尝试以下操作:
import re regx = re.compile("^foo", re.IGNORECASE) db.users.find_one({"files": regx})
事实证明正则表达式搜索在pymongo中有所不同,但同样容易.
正则表达式完成如下:
db.collectionname.find({'files':{'$regex':'^File'}})
这将匹配具有文件属性的所有文档,该文件属性具有以文件开头的项目
为了避免双重编译,您可以使用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文档,因为有一些注意事项。