Чтобы избежать двойной компиляции, вы можете использовать оболочку regex bson, которая поставляется вместе с PyMongo:
>>> regx = bson.regex.Regex('^foo')
>>> db.users.find_one({"files": regx})
Regex просто сохраняет строку, не пытаясь ее скомпилировать, поэтому find_one может затем определить аргумент как 'Regex' и сформировать соответствующий запрос Mongo.
Я чувствую, что этот способ немного более Pythonic, чем другой верный ответ, например:
>>> db.collectionname.find({'files':{'$regex':'^File'}})
. Стоит прочитать на bson Regex, если вы планируете использовать регулярные запросы, потому что есть некоторые оговорки.
, Что исправляет обезьяна? исправление Обезьяны является техникой, используемой для динамичного обновления поведения части кода во времени выполнения.
, Почему исправление обезьяны использования? Это позволяет нам изменять или расширять поведение библиотек, модули, классы или методы во времени выполнения, на самом деле не изменяя исправление Обезьяны Заключения исходного кода
являются прохладной техникой, и теперь мы изучили, как сделать это в Python. Однако как мы обсудили, это имеет свои собственные недостатки и должно использоваться тщательно.
Для большего количества информации относитесь [1]: https://medium.com / nagillavenkatesh1234/monkey-patching-in-python-explained-with-examples-25eed0aea505