2016-10-12 2 views
0

Итак, я создал базу данных в MongoDB, и большинство документов содержат специальный код, который может начинаться с * и заканчиваться символом #. Когда я использую следующий запрос в командной строке MongoDb, он отлично работает, но когда я пытаюсь использовать его в скрипте python, он не работает.PyMongo .find() Специальные символы

cursor = collect.find({$and:[{"key":/.*\*.*/},{"key":/.*\#.*/}]}) 

Я думаю, что проблема заключается в # в запросе, но когда я обернуть его в «», он не работает.

cursor = collect.find({'$and':[{"key":'/.*\*.*/'},{"key":'/.*\#.*/'}]}) 

Пожалуйста, обратите внимание, что я ставлю «» около $ и и первое выражение для сравнения, поскольку синтаксические ошибки появляются при попытке запустить его.

Благодаря

+0

вы можете просто дать образец ваших документов. –

ответ

0

Если вы хотите запросить с помощью регулярного выражения, то вы должны создать объект регулярного выражения Python. Обратите внимание, что в этом случае строка не должна быть окружена //.

import re 
cursor = collect.find({'$and':[{"key":re.compile('.*\*.*')},{"key":re.compile('.*\#.*')}]}) 

В качестве альтернативы, вы можете использовать оператор $regex

cursor = collect.find({'$and':[{"key": {"$regex": '.*\*.*'}},{"key": {"$regex": '.*\#.*'}}]}) 
+0

Хорошо, спасибо вам большое за вашу помощь! – Dunny

Смежные вопросы