【发布时间】:2012-02-25 22:17:57
【问题描述】:
在 Google App Engine 中进行查询以获取子集排序时,您能否指定多个 .order() 调用?您可以在 GQL 中执行此操作,因此我假设您可以通过 .order() 调用来执行此操作,但它似乎不起作用。
q = Score.all()
q.filter("level = ", level)
q.order("-score")
q.order("-submitted")
scoreList = q.fetch(10)
这会将具有相同价值的高分排在最前面。
【问题讨论】:
-
您能否澄清一下“它似乎不起作用”。你期望得到什么,你会得到什么?
-
上面的例子被简化了。我会得到一个按“分数”排序的前 10 个分数的列表,然后是在每个“分数”排序中按“提交”排序的分数。因此,如果有两个相同值的分数,最新的将是第一个。如果有 100 个相同值的分数,我会得到最新的 10 个。这预计会奏效吗?如果是,那么我将开始查看代码中的其他地方。
-
我很确定我一直在我的代码中执行此操作并获得预期的结果。我想知道索引是否不是最新的。数据存储区中已有数据后,您是否添加了相关索引?
-
顺便说一句,这是生产问题还是 SDK 问题?
-
我在这里测试过它(1.6.2、Python 2.7、OSX 10.7),它按预期工作。我链接了订单方法,但是,正如 gae123 指出的(并因此启发了我),您的代码也应该可以工作。但是现在我们处于一个奇怪的领域,你在什么平台上运行什么版本的 Python 和 SDK?