需要说明的一点是,MongoEngine 正则查询仅支持一下几种:
以下操作符可以快捷的进行正则查询:
exact – 字符串型字段完全匹配这个值
iexact – 字符串型字段完全匹配这个值(大小写敏感)
contains – 字符串字段包含这个值
icontains – 字符串字段包含这个值(大小写敏感)
startswith – 字符串字段由这个值开头
istartswith – 字符串字段由这个值开头(大小写敏感)
endswith – 字符串字段由这个值结尾
iendswith – 字符串字段由这个值结尾(大小写敏感)
如果想使用完全的正则查询,需要使用原始查询:
原始查询
你可以通过 __raw__ 参数来使用一个原始的 PyMongo 语句来进行查询,这样可以进行原始的完整查询:
Page.objects(__raw__={'tags': 'coding'})
40 search = {
41 '__raw__':{
42 'content':{'$regex':'A\S+\d+'},
43 },
44 }
45 test_data_list = TestData.objects(**search)
qs = VideoDb.objects(is_delete=False)
c = qs.filter(__raw__={'material_tags': {'$regex': '.*B07?'}})
print(c.count())