Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database GAE fetch()按时间排序的不同值_Database_Google App Engine_Gql - Fatal编程技术网

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的实例不超过两个——很容易过滤。