Go的Google App Engine数据存储区没有!=过滤器

时间:2014-08-14 19:36:33

标签: google-app-engine go

我最近搞乱了GAE,发现它在数据存储区API中错过了基本的!=(不等于)过滤器。

https://developers.google.com/appengine/docs/go/datastore/queries#Go_Property_filters

它也没有" OR"条件操作数。

有人能告诉我如何过滤不相等的数据?

2 个答案:

答案 0 :(得分:6)

即使是那些拥有"!="过滤器实际上将其分解为两个不等式过滤器(一个>和一个<)。也许做相同的事情会解决你的问题吗?

  

从表中选择*,其中param!=" test"

等于

  

从表格中选择*,其中param> "测试"

的结果合并
  

从表中选择*,其中param< "测试"

不理想,但考虑到平台的限制......我认为这是您唯一的选择。

答案 1 :(得分:3)

从您链接的页面中,实际上是一个如何进行此类查询的示例。

来自Restrictions on queries

  

不等式过滤器最多只限于一个属性

     
    

为了避免必须扫描整个索引表,查询机制依赖于所有查询的潜在结果在索引中彼此相邻。为了满足此约束,单个查询可能不会在其所有过滤器上的多个属性上使用不等式比较(<,< =,>,> =)。例如,以下查询有效,因为两个不等式过滤器都适用于同一属性:

  
q := datastore.NewQuery("Person").
        Filter("BirthYear >=", minBirthYear).
        Filter("BirthYear <=", maxBirthYear)