1

我有一个部署的 GAE 应用程序,我注意到我有这个简单的查询:

MBObject.query(MBObject.groupId == group.id).fetch()

groupId是一个ndb.StringProperty(indexed=True)

查看我的 index.yaml 文件,甚至我的 GAE 仪表板(在 appengine.google.com)中的数据存储索引,无论如何都没有列出此属性的索引。这通常意味着我在上传之前没有在开发模式下测试整个应用程序,所以我必须手动插入索引。

但是,查询工作得很好。它成功返回了我想要的所有对象。我想知道这怎么可能?为什么即使通过 groupId 的查询也没有在我的 index.yaml 和仪表板中列出?它不应该引发一些错误吗?

4

1 回答 1

5

GAE 自动索引所有实体,并且您的查询不需要特定的索引定义,index.yaml因为您只查询一个属性(即使您查询多个属性,它也不会创建任何属性)。

如果您要订购此查询,可以通过date属性说它会创建一个索引定义,index.yaml如果您将在 SDK 中运行它,或者您可以手动编写它们。

来自文档

应用程序进行的每个数据存储查询都需要相应的索引。自动创建简单查询的索引,例如对单个属性的查询。复杂查询的索引必须在名为 index.yaml 的配置文件中定义。此文件与应用程序一起上传,以在数据存储中创建索引。

于 2012-12-11T17:55:22.853 回答