App Engine数据存储区查询是否具有默认排序顺序?

时间:2014-11-25 18:02:30

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

App Engine数据存储区查询的返回值是否有默认排序顺序?如果是这样的话是什么?

3 个答案:

答案 0 :(得分:3)

默认情况下,您获得密钥顺序,密钥顺序取决于您是使用默认ID还是提供了密钥名称,如果是前者,则是否使用默认策略进行密钥分配。 The doc表示“默认策略会生成大致均匀分布的随机ID序列。每个ID最长可达16位十进制数。”

“16位”部分很有趣。基本上,密钥是53位 - IEEE双倍的一小部分。 JavaScript使用IEEE双精度数,因此53位是您可以通过JSON安全地往返的最大整数值。

答案 1 :(得分:2)

Datastore write costs表示数据存储区实体包含内置EntityByKinds索引。 This index包含实体密钥。

  

每次添加任何类型的新实体时,都会使用新实体的密钥自动将新行添加到此表中,以便稍后查询。

所以我猜如果没有提供订单,数据存储区会返回按键排序的实体。

  

存储实体密钥,以便在执行查询后返回实体本身时,可以有效地检索实体本身。

我找不到关于asc / desc的文档,但是当我在下面查询时,默认顺序为asc

>SELECT * FROM Model order by __key__ asc
>SELECT * FROM Model
success and same result
>SELECT * FROM Model order by __key__ desc
no matching index found

所以我的研究结论是默认顺序是

order by __key__ asc

如果我错过了什么,请纠正我。

答案 2 :(得分:1)

取决于您过滤的参数。基本上,排序顺序始终是ASC,具体取决于它的过滤方式。看看this document它可能会有所帮助。基本上您使用的过滤器将决定排序顺序。另一个有趣的文档是this one,它更详细地解释了索引。

如果您没有使用过滤器,我相信所使用的索引是基于键的索引,因此您可以使用升序键作为订单。