0

我有以下模型:

class Conversation:
    questionId = db.IntegerProperty(required=True)
    count = db.IntegerProperty(required=True)
    message = db.StringProperty(required=True)

对话由原始问题 ID、消息计数和消息组成。所以数据的一个例子是:

- questionId: 2; count: 0; message: How are you?
- questionId: 2; count: 1; message: I'm fine thanks, how are your kids?
- questionId: 2; count: 2; message: They're great, growing to fast!
- questionId: 3; count: 0; message: John, your late!
- questionId: 3; count: 1; message: I know, I'm so sorry!

我的问题是,如何查询以获取每个问题 ID 的最新(最大)计数?从上面的示例中,它将返回:

- questionId: 2; count: 2; message: They're great, growing to fast!
- questionId: 3; count: 1; message: I know, I'm so sorry!

请记住,不幸的是,数据并未像示例中那样按排序方式存储,因此请想象所有行都乱序。餐桌数量也很大!非常感谢!

4

2 回答 2

0
question_id = 'whatever'
latest_convo = Conversation.gql('WHERE questionId = :1 ORDER BY count DESC', question_id).get()
于 2012-07-19T08:47:08.203 回答
0

你有两个选择:

  • 为每条记录添加一个“最新”标志,仅针对具有给定 ID 的最新问题将其设置为 true,并在新记录替换它时设置为 false。
  • 对每个 ID 使用单独的查询,仅获取每个 ID 的最新问题(使用 sort 和.get().

哪个最有意义取决于您在任何给定时间检索到多少独特的问题。如果它不止几个,你可能应该修改你的模型。

于 2012-07-19T06:22:45.763 回答