Python 谷歌应用引擎NDB排序丢失实体
我试图根据分数对从数据集中提取的几个实体进行排序,但目前它只返回1个实体,而不是数据存储中当前的4个实体 模型定义如下:Python 谷歌应用引擎NDB排序丢失实体,python,sorting,google-app-engine,google-cloud-datastore,app-engine-ndb,Python,Sorting,Google App Engine,Google Cloud Datastore,App Engine Ndb,我试图根据分数对从数据集中提取的几个实体进行排序,但目前它只返回1个实体,而不是数据存储中当前的4个实体 模型定义如下: class Place(ndb.Model): """Model for places.""" title = ndb.StringProperty() url = ndb.StringProperty() longitude = ndb.StringProperty() latitude = ndb.StringProperty()
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)
我拥有的当前数据集:
这只会返回一个位置,而不会返回其他实体
如何将实体从最高分数排序到最低分数
PS:我在谷歌上搜索了所有地方,找不到任何有效的解决方案。你做的很好,所以问题在于数据本身 从数据存储控制台的外观上,我可以看出写入是以不同的方式完成的,数据的形状在您获得的实体和其他实体之间非常不同,还有Write Ops列,它告诉我们很多 只有2次写入的实体没有任何属性索引,ID本身除外,它是按升序和降序写入的,导致上述2次写入操作 您得到的实体有4次写入,显然还有其他索引正在写入,它必须是score,否则您将无法获得任何数据。查询仅适用于索引属性,如果筛选器属性在执行时未索引,则实体可以存在,但不可见 如果模型在代码中的外观与本问题中的相同,则再次放置实体应至少写入12个索引
无法告诉您这是什么原因造成的,可能属性最初被索引为False?您所做的很好,因此问题在于数据本身 从数据存储控制台的外观上,我可以看出写入是以不同的方式完成的,数据的形状在您获得的实体和其他实体之间非常不同,还有Write Ops列,它告诉我们很多 只有2次写入的实体没有任何属性索引,ID本身除外,它是按升序和降序写入的,导致上述2次写入操作 您得到的实体有4次写入,显然还有其他索引正在写入,它必须是score,否则您将无法获得任何数据。查询仅适用于索引属性,如果筛选器属性在执行时未索引,则实体可以存在,但不可见 如果模型在代码中的外观与本问题中的相同,则再次放置实体应至少写入12个索引 无法告诉您这是什么原因造成的,可能属性最初被索引为False?是的,它们最初都被索引为False。我刷新了数据存储并重新添加了所有内容,现在一切正常。谢谢你清理它-我也有一个更好的理解op的写作和索引。干杯是的,它们最初都被索引为False。我刷新了数据存储并重新添加了所有内容,现在一切正常。谢谢你清理它-我也有一个更好的理解op的写作和索引。干杯