如何从 App-Engine 数据存储实体类型中获取最新的 25 个条目

How to fetch the latest 25 entries from an App-Engine datastore entity kind

我有一个包含数千个条目的实体种类(即 ~table)。我想获取最新的 25 个条目。我怎么做?以下逻辑不起作用:它 returns 最老的 25.

Filter timestampFilter = new FilterPredicate("lastestEditDate", FilterOperator.GREATER_THAN_OR_EQUAL, 0);
Query query = new Query(CatMeow.class.getSimpleName()).setFilter(timestampFilter);

FetchOptions options = FetchOptions.Builder.withLimit(25);
DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();
QueryResultList<Entity> entities = datastore.prepare(query).asQueryResultList(options);

我认为我需要完全改变我的逻辑。考虑之后,我认为时间戳过滤器无关紧要。所以我更改为以下逻辑,它也不起作用:它没有返回最新的实体。

Query query = new Query(CatMeow.class.getSimpleName()).
            addSort("lastestEditDate", SortDirection.ASCENDING);
FetchOptions options = FetchOptions.Builder.withLimit(25);
DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();
QueryResultList<Entity> entities = datastore.prepare(query).asQueryResultList(options);

因此,在数千个实体中,我需要获取最新添加的 25 个。我该怎么做?

SortDirection.ASCENDING表示先获取最早的实体(即lastestEditDate值最小的实体)。

您想要的恰恰相反 - 最新 个实体(即具有 最大lastestEditDate 的实体) 第一。

因此,请改用 SortDirection.DESCENDING