如何从 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
。
我有一个包含数千个条目的实体种类(即 ~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
。