【问题标题】:Filter query by key ID on Google App Engine在 Google App Engine 上按键 ID 过滤查询
【发布时间】:2012-04-27 19:53:23
【问题描述】:

我知道有一种方法可以使用get_by_id(someId) 根据其密钥 ID 获取某个实体,但是有没有办法获取多个 ID 高于某个指定值的实体?使用常规过滤器,我们可以做到query.filter("customId >", someId),但是对于内置密钥 ID,我该如何做到这一点?

【问题讨论】:

  • 那是键名。我在问密钥ID。键 ID 是一个 int 值,其中键名称是字母数字。另一个问题是,链接问题中的那个人是如何在键名上使用 >= 运算符的?
  • @mohabithar - 是一回事:key 可以是长的也可以是字符串。
  • 如果您想获得“最近的客户”之类的信息,我认为您最好添加一个“last_update”属性并对其进行查询。
  • @mohabitar 在生产中,ID 以块为单位分配给服务器;然后,他们在请求新的块之前耗尽了他们的块。您获得的 ID 取决于处理您的请求的服务器。在 dev_appserver 中,所有 ID 都使用一个计数器,因此它们看起来会增加 - 但这正是 dev_appserver 的实现方式。

标签: database google-app-engine


【解决方案1】:

尽管 Key 看起来像一个无意义的大字符串,但它实际上是您的应用程序 ID、实体类型以及数字自动分配的 ID 或您生成的键名(父级和命名空间是也在那里,但同样的基本原则适用)。

当您进行 比较时,或在查询中使用“order by”时,它针对的是这些单独的部分,而不是您看到的字符串编码。因此,假设 app-ID 和 entity-type 相同,那么您将按 ID 或键名部分进行比较或排序。文档解释它here。

在过滤方法中你可以使用'__key__'作为属性名,然后使用Key.from_path构造一个Key对象(至少在python中)

【讨论】:

    猜你喜欢
    • 2011-02-02
    • 1970-01-01
    • 2016-06-21
    • 1970-01-01
    • 2012-04-27
    • 1970-01-01
    • 2010-10-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多