在Mongo Shell中运行的PyMongo中复制正则表达式

时间:2018-08-17 22:43:04

标签: python mongodb pymongo

试图在根s3存储桶中而不是在子文件夹中匹配文件

https://s3.amazonaws.com/assets.abc.net/ONE.jpg将是一个匹配项 和 https://s3.amazonaws.com/assets.abc.net/SOMEFOLDER/one.jpg将不匹配

在MongoShell中,如果我运行此查询,我会得到结果

db.myCollection.find({
"attachments.url" : /https:\/\/s3.amazonaws.com\/assets.abc.net\/[^\/]+\.[A-z]+/
                    })

现在在pyMongo中,我正在尝试复制同一件事,但得到零结果

这是我的代码

regex = re.compile(r"https://s3.amazonaws.com/assets.abc.net/[^/]+\.[A-z]+", re.IGNORECASE)

# AlTERNATE ALSO TRIED
# regex = re.compile(r"https:\/\/s3.amazonaws.com\/assets.abc.net\/[^\/]+\.[A-z]+", re.IGNORECASE)

cursor = db.listings.find({ "attachments.url" : regex })

有人可以帮忙吗? Python版本是2.7

2 个答案:

答案 0 :(得分:0)

这才是有效的

regex = re.compile(r"https:\/\/s3.amazonaws.com\/assets.abc.net\/[^\/]+\.[A-z]+", re.IGNORECASE)

cursor = db.listings.find({ "attachments.url" : { $regex : regex} })

答案 1 :(得分:0)

regex = re.compile(re.escape(r"https://s3.amazonaws.com/assets.abc.net/[^/]+\.[A-z]+"), re.IGNORECASE)


cursor = db.listings.find({ "attachments.url" : regex })

尝试通过re.escape()来转义模式