2016-07-08 222 views
0

我有一个不同的字符串列表。Pymongo正则表达式匹配列表

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

我想执行聚集操作,使得我的$匹配如下所示:

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

var这个领域MongoDB中的记录是一个字符串包含数字:
例如“abc123”,“haaofalfa812”等。我想将此Var与正则表达式匹配。如果善堂的变量是少,我可能已经做到了这一点......

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

但由于它是一个地表温度已经初始化,并包含了很多元素,我该怎么办?

我尝试以下但这并不太多工作...

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

我收到以下错误原因是显而易见的。

TypeError: first argument must be string or compiled pattern

回答

2

您的列表理解错误。我想你想做的事是这样的:

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

TypeError来自试图通过发电机(x for x in lst语句),以re.compile()

+0

我不相信,我做了小错误!谢啦。 – Blabber