簡體   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