Использование списка в фильтре GQL

Как я могу сделать выбор в GQL, используя список в качестве фильтра.

Если у меня есть класс

public class Obj{

    @Persistent
    private Long name;

}

Как я могу получить все объекты Obj, имя которых отсутствует в списке?


person Victor    schedule 05.07.2011    source источник


Ответы (1)


Вы можете получить результаты, объединив все фильтры вместе.

SELECT * FROM User where email != '[email protected]' and email != '[email protected]' and email != '[email protected]'

Код Python

q = User.all()
for i in ilist:
    q = q.filter("email = ", i)

Но вам может понадобиться знать, что для такого рода запросов существуют некоторые ограничения.

Примечание. Операторы IN и != используют несколько запросов за кулисами. Например, оператор IN выполняет отдельный базовый запрос к хранилищу данных для каждого элемента в списке. Возвращаемые объекты являются результатом перекрестного произведения всех базовых запросов к хранилищу данных и не дублируются. Для одного запроса GQL допускается не более 30 запросов к хранилищу данных.

person lucemia    schedule 05.07.2011
comment
А как насчет угроз, вроде списка. Я уже использую это решение, но хочу знать, как фильтровать, используя список значений. - person Victor; 06.07.2011
comment
Вы можете получить объекты в списке по состоянию. Однако я не думаю, что есть способ напрямую получить объекты, не входящие в список. - person lucemia; 07.07.2011