Pymongo Regex与名单匹配

时间:2016-07-08 01:53:31

标签: python regex mongodb pymongo

我有一系列不同的字符串。

lst = ['.\*123.\*','.\*252.\*','.\*812.\*','.\*135.\*']

我想执行聚合操作,以使我的$ match看起来如下:

 {"$match":{"Var":{"$in":lst}}}  

MongoDb记录中的var字段是一个包含数字的字符串:
例如“abc123”,“haaofalfa812”等我希望将这个Var与正则表达式相匹配。如果lst中的变量较少,我可以做到这一点......

{"$match":{"Var":{"$in":[re.compile('.*123.*'),re.compile('.*252.*'),re.compile('.*812.*')]}}}

但由于它已经初始化并包含很多元素,我该怎么办?

我尝试了以下但是这也不起作用......

{"$match":{"Var":{"$in":[re.compile(x for x in lst)]}}}  

出于显而易见的原因,我收到以下错误。

  

TypeError:第一个参数必须是字符串或编译模式

1 个答案:

答案 0 :(得分:2)

你的列表理解是错误的。我想你想做的是:

[re.compile(x) for x in lst]

TypeError来自尝试将生成器(x for x in lst语句)传递给re.compile()