我正在尝试对两个不同的属性应用过滤器,但GAE不允许我这样做,那将是解决方案,那就是代码片段:
if searchParentX :
que.filter("parentX >=", searchParentX).filter("parentX <=", unicode(searchParentX) + u"\ufffd")
que.order('parentX')
if searchParentY :
que.filter("parentY >=", searchParentY).filter("parentY <=", unicode(searchParentY) + u"\ufffd")
答案 0 :(得分:3)
解决方案是进行内存过滤:
或者,如果您的数据的结构使您可以将数据分成几组,则可以对该组执行相等过滤并在内存中完成过滤。例如,如果您正在搜索字符串但您知道字符串是固定长度(例如6个字符),则可以创建一个“查找”字段,其中包含乞讨的3/4字符。然后,当您需要搜索此字段时,您可以通过匹配前几个字符来完成搜索,并在内存中完成搜索。另一个例子:当搜索整数范围时,如果你可以定义范围的常见分组(比如一年的几十年或价格范围),那么你可以定义一个“范围”字段来进行相等搜索并继续在内存中过滤
答案 1 :(得分:1)
不等式过滤器最多只限于一个属性,我认为这个限制是因为bigtable中的数据以词汇排序形式存储,所以一次只能执行一次搜索
https://developers.google.com/appengine/docs/python/datastore/queries#Restrictions_on_Queries