Сложные строковые запросы в MongoAlchemy
Я изучаю MongoAlchemy, слой поверх драйвера Python для MongoDB. Допустим, есть класс Python, сопоставленный с объектом MongoDB следующим образом:
from mongoalchemy.document import Document
from mongoalchemy.fields import *
class Person(Document):
name = StringField()
И я запрашиваю базу данных следующим образом:
for person in query.filter(Person.name == 'Geronimo'):
print person
Это работает нормально, но теперь я хочу запросить в базе данных имя без учета регистра (как "geronimo" и "Geronimo"), или найти все имена, имеющие два "о" в них. query.filter(Person.name[1:] == 'eronimo')
и такие не работают, так как Person.name не строка, а объект QueryField.
Как мне сделать такие сложные запросы в MongoAlchemy?
0 ответов
Чтобы найти любое совпадение, вы можете использовать операторы в запросе. Нравится:
datosquery = datos.query.filter({datos.schema_name: {"$regex": texto}})
В $regex
Оператор, использующий регулярные выражения, позволяет нам выполнять более сложный поиск в текстовых полях.
Вот ссылка на операторы для запросов mongo.
https://charlascylon.com/2013-07-10-tutorial-mongodb-operaciones-de-consulta-avanzadas