AppEngine数据存储区中的不等式过滤器

时间:2012-05-30 02:34:09

标签: google-app-engine google-cloud-datastore

据我所知,Google AppEngine每个查询只支持一个不等式过滤器。这个限制的解决方法是什么?有没有提供类似效果的解决方案?

3 个答案:

答案 0 :(得分:3)

实际上GAE支持多个不等式过滤器,只要它们是on the same property

此限制的变通方法是特定于数据的,例如这取决于您的数据结构以及查询方式。例如,对于地理搜索,正如@Dan Holevoet所提到的,存在各种地理哈希算法。 基本上所有这些算法都涉及将多个属性组合成一个属性并同时量化属性(创建离散值)。例如,地理散列涉及将世界地图划分为小的固定大小区域(=组合纬度/经度和量化),以便能够通过相等运算符进行搜索。

答案 1 :(得分:1)

是否有针对每个查询使用单个不等式过滤器的解决方法取决于您要查询的数据集的类型。

例如,如果您想使用纬度和经度地址查询位置数据,则通常需要在两个属性(lat和long)上查询一系列值。但是,使用geohash算法,您只需使用一个属性即可完成等效查询。

答案 2 :(得分:0)

当我解决这个问题时(示例搜索范围从 - 到)我使用单一不等式过滤器的查询。根据排序顺序(asc或desc),我选择上限或下限。之后,我使用查询过滤器中没有的底部或上限以编程方式过滤结果。