Выполнение запросов регулярного выражения с помощью pymongo

Я пытаюсь выполнить запрос регулярного выражения, используя pymongo для сервера mongodb. Структура документа выглядит следующим образом

{
  "files": [
    "File 1",
    "File 2",
    "File 3",
    "File 4"
  ],
  "rootFolder": "/Location/Of/Files"
}

Я хочу получить все файлы, соответствующие шаблону * Файл. Я попытался сделать это как таковой

db.collectionName.find({'files':'/^File/'})

Но я ничего не получаю, я что-то пропустил, потому что, согласно документам mongodb, это должно быть возможно. Если я выполняю запрос в консоли mongo, он отлично работает, означает ли это, что api не поддерживает его или я просто неправильно его использую

Ответ 1

Вызывается, поиск регулярных выражений выполняется несколько иначе в pymongo, но так же просто.

Regex выполняется следующим образом:

db.collectionname.find({'files':{'$regex':'^File'}})

Это будет соответствовать всем документам, у которых есть свойство файлов, в котором есть элемент, который начинается с файла

Ответ 2

Если вы хотите включить параметры регулярного выражения (например, игнорировать регистр), попробуйте следующее:

import re
regx = re.compile("^foo", re.IGNORECASE)
db.users.find_one({"files": regx})

Ответ 3

import re

def get_pattern_query(pattern,starting_with=False,ending_with=False,ignore_case=False):
    start = '^' if starting_with else '.*'
    end = '$' if ending_with else '.*'
    pattern = start + re.escape(pattern) + end
    return re.compile(pattern, re.IGNORECASE) if ignore_case else re.compile(pattern)

Удаление шаблона перед компиляцией обрабатывает все символы.