Выполнение нескольких совпадений регулярных выражений с одним и тем же индексом с помощью pymongo - PullRequest
1 голос
/ 07 июня 2011

Мне нужно перевести немного MySQL на mongodb.У меня есть запрос MySQL с несколькими совпадениями регулярных выражений в одном столбце.Можно ли сделать то же самое с mongodb?

SELECT * FROM table WHERE column1 REGEXP r1 AND column1 REGEXP r2 AND colum1 REGEXP r3;

С помощью pymongo я могу выполнять поиск регулярных выражений с помощью одного регулярного выражения, например:

regex1 = re.compile(r1)
db.collection.find({"column1":regex1})

или

db.collection.find({"column1":{"$regex":"r1"}})

Как добавить несколько регулярных выражений в column1?

Они не работают:

{"column1":regex1,"column1":regex2}
{"column1":{"$regex":"r1","$regex":"r2"}}
{"column1":[regex1,regex2]}
{"column1":{"$regex":["r1","r2"]}}

1 Ответ

5 голосов
/ 07 июня 2011
db.collection.find({"column1": {"$all": [re.compile("r1"), re.compile("r2")]}})

Также посмотрите на будущее $ и оператор .

Кстати, если ваше регулярное выражение не префиксное (/^text/), индекс не будетб .

...