没有索引的Google App Engine查询

时间:2012-12-11 17:42:29

标签: google-app-engine app-engine-ndb

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

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

groupIdndb.StringProperty(indexed=True)

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

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

1 个答案:

答案 0 :(得分:5)

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

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

来自docs

  

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