我最近搞乱了GAE,发现它在数据存储区API中错过了基本的!=(不等于)过滤器。
https://developers.google.com/appengine/docs/go/datastore/queries#Go_Property_filters
它也没有" OR"条件操作数。
有人能告诉我如何过滤不相等的数据?
答案 0 :(得分:6)
即使是那些拥有"!="过滤器实际上将其分解为两个不等式过滤器(一个>和一个<)。也许做相同的事情会解决你的问题吗?
从表中选择*,其中param!=" test"
等于
从表格中选择*,其中param> "测试"
与
的结果合并从表中选择*,其中param< "测试"
不理想,但考虑到平台的限制......我认为这是您唯一的选择。
答案 1 :(得分:3)
从您链接的页面中,实际上是一个如何进行此类查询的示例。
不等式过滤器最多只限于一个属性
为了避免必须扫描整个索引表,查询机制依赖于所有查询的潜在结果在索引中彼此相邻。为了满足此约束,单个查询可能不会在其所有过滤器上的多个属性上使用不等式比较(<,< =,>,> =)。例如,以下查询有效,因为两个不等式过滤器都适用于同一属性:
q := datastore.NewQuery("Person").
Filter("BirthYear >=", minBirthYear).
Filter("BirthYear <=", maxBirthYear)