3

谷歌应用引擎 python sdk 提供了一个 Expando 类型的对象,可用于将动态属性添加到可以持久保存到数据存储区的对象中。

应用程序引擎还要求,对于需要搜索或排序对象的任何属性,必须在将应用程序上传到谷歌服务器之前创建索引。这真的很奇怪,因为这意味着我应该事先知道我的用户将在我的对象上创建哪些属性。如果我事先知道,为什么不在现有模型中将它们定义为静态属性?

有谁知道在上传到应用引擎后如何为 Expando 模型的动态属性自动创建索引?如果不是,谁能告诉我为什么 gae 吹捧 Expando 作为动态构造,因为它不能让您创建可以搜索或排序的新属性,只有不可搜索或排序的属性。

4

1 回答 1

4

所有属性都会自动为简单查询建立索引。在这种情况下,简单查询是那些:

  1. 仅使用等式过滤器,不使用排序顺序或不等式过滤器。
  2. 在单个字段上具有不等式过滤器或排序顺序,没有其他过滤器。

如果您想做更复杂的查询——例如混合不等式和相等过滤器的查询,那么您才需要构建自定义索引。

无法在运行时构建自定义索引。如果要使用 expandos,则需要确保将执行的查询限制为在上述情况之一下可满足的查询。

于 2011-01-27T03:42:06.597 回答