Documentation > Datastore Queries > Limitations of cursors
排序顺序
例外情况是原始查询的最终排序顺序是否在
__key__
上。在这种情况下,您可以在反向查询中使用光标,该查询是每个排序顺序相反的原始查询。反向查询可以修改开始光标,结束光标,偏移和限制。
虽然声明只能以相反的顺序使用__key__,但它似乎也可以在另一个创建自定义索引的属性中使用。我在开发环境和生产环境中都尝试过它。
什么意思"如果原始查询的最终排序顺序在__key __上,则例外。" ?
答案 0 :(得分:0)
让我用一个简单的例子来说明这一点:
假设您有查询(省略游标/限制语法) -
SELECT * FROM MyEntity ORDER BY PROP1 ASC
现在要求您需要在正向和反向两个方向上遍历并使用游标。
您需要做的第一件事是修改您的查询以将__key__
作为最后一种 -
SELECT * FROM Entity ORDER BY PROP1 ASC, __key__ ASC
您可以使用游标正常遍历,但是当您需要向后遍历时,需要通过反转排序顺序来执行查询。您仍然可以使用您所在页面的相同光标。因此,查询将更改为
SELECT * FROM Entity ORDER BY PROP1 DESC, __key__ DESC
请注意,我们已将 ASC 结束订单更改为 DESC 结尾。
这实际上会为您提供当前光标位置的先前记录。为了使其工作,您需要具有适当的复合索引(例如,在DESC顺序中PROP1
和__key__
上的索引)。当然,您也可以在排序顺序中添加其他属性,或者从示例中删除PROP1
,如果您只需按键排序结果就可以了。
如果将键作为最后一种排序,您将无法使用在反向查询中前进时获得的光标。这就是"异常"规则是。