【问题标题】:When doing a non ancestor query with a sort by key, will my result be ordered by entity groups?使用按键排序进行非祖先查询时,我的结果会按实体组排序吗?
【发布时间】:2013-01-13 21:37:45
【问题描述】:
我需要更改大量属于不同实体组的实体。
如果我进行非祖先查询,按键排序,例如:
Query query = new Query( "Kind" )
.setFilter( ... )
.addSort( Entity.KEY_RESERVED_PROPERTY, ASC or DESC );
我是否总是得到按实体组排序的结果?我打算遍历
结果直到父(或祖父)键更改,并为同一组中的所有实体创建单个事务 - 以避免争用。
这会按预期工作吗?还有什么建议吗?
谢谢。
【问题讨论】:
标签:
google-app-engine
google-cloud-datastore
【解决方案1】:
是的。按键排序按祖先列表中的每个实体对它们进行排序 - 例如,首先按根实体,然后按其子实体,依此类推。
【解决方案2】:
Kindles Queries 或 Ancestor Queries 只能按 KEY 排序。
您正在按键排序,这没关系。
key 是 PARENT+KIND+ID 的结果
每个种类的密钥都是密钥的一部分。因此,您的所有结果都将按种类排序,然后按关键字排序。
来自GAE KEYS
每个模型实例都有一个标识键,其中包括
实例的实体类型以及唯一标识符。标识符
可以是键名字符串,由
创建实例时的应用程序,或整数数字 ID,
写入实例时由 App Engine 自动分配
(put) 到数据存储区。