谷歌数据存储订单与祖先

2024-04-23 19:50:05 发布

您现在位置:Python中文网/ 问答频道 /正文

语言:Python。在

我使用的是数据存储python库,一切正常。当使用datastorequery对查询结果进行排序时,我可以添加query.order = ['name'];来对结果进行排序。但是当查询具有祖先的表时,例如:

ancestor = client.key('user', name, namespace = NAMESPACE)
query = client.query(kind='project', ancestor=ancestor, namespace = NAMESPACE)

然后我设置顺序:query.order = ['name'];,它不起作用。我想对种类project排序,它的祖先是kinduser。 错误消息是:“400没有找到匹配的索引。推荐索引为:种类:项目祖先:是属性:名称,为yaml样本。但我这里不用山药。虽然我想一定会有结果的。在


Tags: 数据keynameprojectclient语言排序order
1条回答
网友
1楼 · 发布于 2024-04-23 19:50:05

所有数据存储查询都是基于索引的。来自Indexes

Every Google Cloud Datastore query computes its results using one or more indexes which contain entity keys in a sequence specified by the index's properties and, optionally, the entity's ancestors. The indexes are updated to reflect any changes the application makes to its entities, so that the correct results of all queries are available with no further computation needed.

您得到的错误来自数据存储端,表明数据存储中缺少特定查询所需的索引。它与执行祖先查询和/或在应用程序代码中使用yaml无关。在

yaml引用只是根据索引部署到数据存储的方式(这是您的查询工作所需的),请参见Deploying or deleting indexes。在

因此,您需要创建一个index.yaml文件,该文件至少包含错误消息中指示的索引规范(以及其他查询可能需要的任何其他索引,如果有的话),将其部署到数据存储中,等待索引进入Indexes页上的Serving状态(这可能需要一段时间),之后您的查询应该工作。在

相关问题 更多 >