MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Pymongo Regex $ todos os vários termos de pesquisa


Você está construindo uma string em seu loop for, não uma lista de re.compile objetos. Você quer:
collected_x = []                            # Initialize an empty list

for x in input:                             # Iterate over input
  collected_x.append(re.compile(x))         # Append re.compile object to list

collected_x_cut = collected_x[:-2]          # Slice the list outside the loop

cursor = db.collection.find({"key": {"$all": collected_x_cut}})

Uma abordagem simples seria usar map para construir a lista:
collected = map(re.compile, input)[:-2]
db.collection.find({"key": {"$all": collected}})

Ou um list comprehension :
collected = [re.compile(x) for x in input][:-2]
db.collection.find({"key": {"$all": collected}})