繁体   English   中英

按键查询Google数据存储区并按其他属性排序

[英]Querying google datastore by key and sorting by another property

我在java中使用低级数据存储区接口。 我有一个存储密钥集合的实体。 我想查询数据存储区以获取集合中的所有实体。 但是,我还想在创建的日期属性上对它们进行排序。 所以,我想做这样的事情:

Query query = new Query(EndeavorUpdate.ENDEAVOR_UPDATE_ENTITY_TYPE);
//getEndeavorUpdateIds() returns a List < Key >
query.addFilter("__key__", Query.FilterOperator.EQUAL, getEndeavorUpdateIds());
query.addSort(EndeavorUpdate.CREATED_DATE_PROPERTY);
PreparedQuery pq = ds.prepare(query);

但是,我得到一个例外,说“不允许使用一组值”。 如果我使用IN而不是EQUAL,它确实有效,但这看起来非常低效。

有没有办法有效地进行此查询,还是应该从数据存储区获取所有实体并自行进行排序?

由于您拥有密钥,因此直接通过密钥获取所有实体,然后自己按日期对它们进行排序将是最有效的。

自己进行排序也可以避免在EndeavorUpdate模型的日期创建字段中需要索引(取决于您是否还需要在代码中的其他位置使用这样的索引)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM