Сложные строковые запросы в 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

Другие вопросы по тегам