Google Cloud数据存储区:在反向查询中使用光标

时间:2017-06-14 02:38:21

标签: google-cloud-datastore

  

Documentation > Datastore Queries > Limitations of cursors

     
      
  • 排序顺序

         

    例外情况是原始查询的最终排序顺序是否在__key__上。在这种情况下,您可以在反向查询中使用光标,该查询是每个排序顺序相反的原始查询。反向查询可以修改开始光标,结束光标,偏移和限制。

  •   

虽然声明只能以相反的顺序使用__key__,但它似乎也可以在另一个创建自定义索引的属性中使用。我在开发环境和生产环境中都尝试过它。

什么意思"如果原始查询的最终排序顺序在__key __上,则例外。" ?

1 个答案:

答案 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,如果您只需按键排序结果就可以了。

如果将作为最后一种排序,您将无法使用在反向查询中前进时获得的光标。这就是"异常"规则是。

相关问题