【问题标题】:Pymongo Regex match with listPymongo 正则表达式与列表匹配
【发布时间】:2016-11-10 12:03:17
【问题描述】:

我有一个不同字符串的列表。

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.*')]}}}

但是既然它是一个已经初始化的lst并且包含很多元素,我该怎么办呢?

我尝试了以下方法,但这也不起作用......

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

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

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

【问题讨论】:

    标签: python regex mongodb pymongo


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-01-08
      • 1970-01-01
      • 2022-01-22
      • 2016-02-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多