Categories: Python

Расширенные запросы в MongoEngine

Иногда, вызывая объект QuerySet с какими то параметрами вы не можете в полной мере описать запрос который вам нужен. Например если вам нужно отфильтровать документы по lдвум или больше параметрам.

Для того чтобы получить документы по двум и более запросам одновременно у MongoEngine имеется класс Q.

from mongoengine import Q

Объект Q представляет собой часть запроса, и может быть инициализирован, используя тот же синтаксис, что и для запроса документов. Для построения сложного запроса вы можете объединить объекты Q с помощью операторов & (логическое и) и | (логическое или). Чтобы организовать сложную фильтрацию с использованием объекта Q, передайте его в качестве первого аргумента Document.objects с необходимыми параметрами.

Пример №1

animals = Animals.objects(Q(hunters=True) & Q(size=big)).all()

В данном примере мы получаем всех животных, являющимися крупными хищниками.

Пример №2

cars = Cars.objects(Q(brand=toyota) & (Q(color=white) | Q(color=grey))).all()

А тут мы получаем черные и серые машины марки toyota

Обратите внимание! Разрешено использование только битовых операторов & и |. Использование вместо них логических and и or, приведет к неправильному выполнению запроса.

Так запрос:

animals = Animals.objects(Q(hunters=True) and Q(size=big)).all()

Будет обработан как:

animals = Animals.objects(Q(hunters=True)).all()
admin

Share
Published by
admin

Recent Posts

После включения диагностического запуска не удается войти в Windows — как исправить?

Некоторые пользователи, экспериментируя с конфигурацией системы в окне msconfig могут столкнуться с ситуацией, когда после…

1 неделя ago

WinScript — очистка и настройка Windows 11 и 10

На сайте не раз публиковались обзоры программ, предназначенных для очистки или настройки последних версий Windows.…

1 неделя ago

Предварительный просмотр накопительного обновления не устанавливается — решение

При установке некоторых обновлений Windows 11, имеющих в названии «Предварительный просмотр накопительного обновления», многие пользователи…

1 неделя ago

FixExec — восстановление ассоциаций .exe, .bat и .com файлов

Некоторые пользователи Windows 11, 10 и предыдущих версий системы могут столкнуться с ситуацией, когда исполняемые…

1 неделя ago

Ошибка 0x800705b4 при обновлении Windows 11 и 10 — как исправить?

При установке обновлений Windows 11/10 некоторые пользователи могут столкнуться с ошибкой с кодом 0x800705b4 и…

1 неделя ago

Обслуживание вашей версии Windows 11 окончено — что делать?

Пользователи Windows 11 могут столкнуться с сообщением «Обслуживание вашей версии Windows окончено» (Your version of…

1 неделя ago