2016-07-08 10 views
0

Ich habe eine Liste von verschiedenen Strings.Pymongo Regex mit der Liste

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

Ich möchte eine Aggregationsoperation auszuführen, so dass meine $ Spiel sieht wie folgt aus:

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

Das var Feld in MongoDB Aufzeichnungen ist eine Zeichenfolge, die Zahlen:
z.B. "abc123", "haaofalfa812" usw. Ich möchte diesen Var einem regulären Ausdruck zuordnen. Wenn die Variablen in der lst weniger waren, konnte ich habe dies getan ...

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

Aber da es ein lst bereits initialisiert ist und enthält viele Elemente, was soll ich tun?

Ich habe versucht, die folgenden aber auch dies nicht funktioniert ...

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

ich folgende Fehlermeldung aus offensichtlichen Gründen erhalten.

TypeError: first argument must be string or compiled pattern

Antwort

2

Ihr Listenverständnis ist falsch. Ich rechne damit, was Sie wollten dies tun:

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

Die TypeError kommt aus versuchen, Generator (x for x in lst Anweisung) zu re.compile()

+0

Ich glaube nicht zu passieren, ich, dass kleine Fehler gemacht! Danke, Mann. – Blabber