我正在尝试在数据存储中查询得分最高的 100 个用户,这些用户在过去一周登录(日期字段)。
List<User> users = ofy().load().type(User.class)
.filter("date >", date).order("date")
.order("-points").limit(100).list();
它似乎忽略了按点的最终排序,而是返回按日期排序的列表。如果我删除日期过滤器并排序,那么我会得到按点很好地排序的列表,但包括超过一周前登录的用户。
我已经仔细阅读了文档,它似乎允许同时包含不等式过滤器和多种排序的查询。
任何想法我做错了什么?
以下是文档中的一些相关说明:
由于 App Engine 数据存储区执行查询的方式,如果查询指定属性的不等式过滤器和其他属性的排序顺序,则不等式过滤器中使用的属性必须在其他属性之前排序。
...如果查询指定了一个或多个不等式过滤器以及一个或多个排序顺序,则第一个排序顺序必须引用不等式过滤器中命名的相同属性。