我试图在两个不同的属性上应用过滤器,但是它不允许我这样做,那么解决方案是什么,这里是代码片段:
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")
不等式过滤器最多只能有一个属性,我认为这个限制是因为bigtable中的数据是以词法排序的形式存储的,所以一次只能执行一次搜索
https://developers.google.com/appengine/docs/python/datastore/queries#Restrictions_on_Queries
解决方案是进行内存筛选:
或者,如果数据的结构可以将数据分解为多个集合,则可以对该集合执行相等筛选器并在内存中完成筛选。例如,如果您正在搜索字符串,但您知道字符串是固定长度(比如6个字符),则可以创建一个包含3/4个字符的“查找”字段。然后,当您需要在这个字段上搜索时,可以通过匹配前几个字符来完成,并在内存中完成搜索。另一个例子:在搜索整数范围时,如果您可以定义通用的范围分组(比如一年几十年,或者价格范围),那么您可以定义一个“范围”字段来执行相等搜索并在内存中继续过滤
相关问题 更多 >
编程相关推荐