【问题标题】:Using List in GQL Filter在 GQL 过滤器中使用列表
【发布时间】:2011-09-29 00:30:06
【问题描述】:

如何在 GQL 中使用列表作为过滤器进行选择。

如果我有课

public class Obj{

    @Persistent
    private Long name;

}

我怎样才能得到名称不在列表中的所有 Obj?

【问题讨论】:

  • 感谢@lucemia,但我已经阅读了它,本教程对我没有帮助。 :(
  • 好的,顺便说一句,“使用列表作为过滤器”是什么意思?您想通过 ListProperty 过滤实体吗?或者您想使用列表作为条件?
  • 我对这个问题做了一些编辑来澄清它?
  • 排除某些名称会过滤掉多少百分比的结果?简单地检索所有结果并在检索到它们后排除您不想要的结果可能更有效。

标签: java google-app-engine gql gqlquery


【解决方案1】:

您可以通过将所有过滤器链接在一起来获得结果。

SELECT * FROM User where email != 'xxx@gmail.com' and email != 'yyy@gmail.com' and email != 'zzz@gmail.com'

Python 代码

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

但是您可能需要知道这种查询有一些限制。

注意:IN 和 != 运算符在后台使用多个查询。例如,IN 运算符对列表中的每个项目执行单独的底层数据存储查询。返回的实体是所有底层数据存储查询的交叉产品的结果,并且已删除重复数据。任何单个 GQL 查询最多允许 30 个数据存储区查询。

【讨论】:

  • 那么像列表一样的威胁怎么样。我已经在使用这个解决方案,但我想知道如何使用值列表进行过滤。
  • 您可以通过“in”条件获取列表中的objs。但是,我认为没有办法直接获取不在列表中的对象。
猜你喜欢
  • 2023-01-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-23
相关资源
最近更新 更多