Database GAE fetch()按时间排序的不同值
我有一个模型:Database GAE fetch()按时间排序的不同值,database,google-app-engine,gql,Database,Google App Engine,Gql,我有一个模型: class MyModel(db.Model): ts = db.DateTimeProperty(auto_now_add=True) id_from_other_source = db.StringProperty(default='') #some data 现在我有了一些id的列表,这些id与来自其他源字段的id匹配。 关于id的数据会随着时间的推移而变化,因此对于一个id,有很多数据 我希望运行这样一个查询,为每个id只获取该id中最年轻的一个
class MyModel(db.Model):
ts = db.DateTimeProperty(auto_now_add=True)
id_from_other_source = db.StringProperty(default='')
#some data
现在我有了一些id的列表,这些id与来自其他源字段的id匹配。
关于id的数据会随着时间的推移而变化,因此对于一个id,有很多数据
我希望运行这样一个查询,为每个id只获取该id中最年轻的一个条目。
比如:
MyModel.all().filter('id_from_other_source IN', my_id_list).order('-ts').fetch(1000)
但在id中有来自其他来源的断开。我知道您不能使用DISTINCT运行GQL查询,但也许您可以看到任何不会运行太多查询的解决方案
一种解决方案是一个接一个地获取结果,但我真的希望用较少的查询次数来实现这一点。我实际做到这一点的巧妙方法是将字段recent=True/False添加到模型中,并偶尔在cron中更新该字段。然后无限制地获取对象。对象的有效期约为一周,cron每天都在执行较旧的任务。当我提取最近的数据时,每个id的实例不超过两个——很容易过滤。