gpt4 book ai didi

python - Google App Engine NDB 排序丢失实体

转载 作者:太空宇宙 更新时间:2023-11-04 08:56:33 25 4
gpt4 key购买 nike

我正在尝试根据分数对从数据集中提取的一些实体进行排序,但目前它只返回 1 个实体,而不是数据存储中当前的 4 个实体。

模型定义如下:

class Place(ndb.Model):
"""Model for places."""
title = ndb.StringProperty()
url = ndb.StringProperty()
longitude = ndb.StringProperty()
latitude = ndb.StringProperty()
score = ndb.IntegerProperty()
votes = ndb.KeyProperty(repeated = True, kind = 'Vote')
reviews = ndb.KeyProperty(repeated = True, kind = 'Review')

我试图获取得分最高的 10 个地方的查询是:

places = Place.query().order(Place.score).fetch(10)

我拥有的当前数据集: Screenshot of datastore

这导致仅返回位置 A 而不是其他实体。

如何从最高到最低分数对实体进行排序?

PS:我用 Google 搜索过,找不到任何可行的解决方案。

最佳答案

你做的很好,所以问题出在数据本身。

从数据存储控制台的外观来看,我可以看出写入是以不同的方式完成的,您获得的实体与其他实体之间的数据形状非常不同,而且还有Write Ops 专栏,它告诉我们很多。

只有 2 次写入的实体没有索引任何属性,除了 ID 本身,它是按升序和降序写入的,导致上述 2 次写入操作。

你得到的实体有 4 次写入,显然还有其他索引正在写入,它必须是 score,否则你不会得到任何数据。查询仅适用于索引属性,如果过滤器属性在执行时未被索引,则实体可以存在但“不可见”。

如果模型在您的代码中看起来与此问题中的方式相同,则再次put()实体应该至少写入 12 个索引。

无法告诉您是什么原因造成的,也许这些属性最初是indexed=False

关于python - Google App Engine NDB 排序丢失实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29654362/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com