Google应用引擎,查询多个实体

时间:2013-01-07 06:15:29

标签: python google-app-engine

我有以下两个实体。

class Photo(db.Model):
    name=db.StringProperty()
    registerdate=db.DateTimeProperty()
    iso=db.StringProperty()
    exposure=db.StringProperty()

class PhotoRatings(db.Model):
    ratings=db.IntegerProperty()

我需要做以下事情。 获得所有照片(照片)与iso = 800按照评级排序(PhotoRatings)。 我不能在Photo中添加添加评级,因为评级一直在变化,我必须每次都写整个Photo实体。这将花费我更多的时间和金钱,应用程序将受到性能影响。 我看了这个, https://developers.google.com/appengine/articles/modeling 但无法从中获得太多信息。

编辑:我想避免获取太多项目并手动执行匹配。我需要快速有效的解决方案。

1 个答案:

答案 0 :(得分:1)

您正在尝试使用显式非关系数据存储区进行关系数据库查询。

正如您可能想象的那样,这会带来问题。如果您希望数据存储区为您排序结果,则必须能够索引您想要排序的内容。索引不能跨越多个实体类型,因此您无法拥有Photo排序的PhotoRatings索引。

对不起。


但是,请考虑一下 - 哪种情况会更频繁发生?查询这种照片排序,或者有人对照片进行评级?有可能,您将拥有比行动更多的观点,因此将评级作为Photo实体的一部分存储可能不会像您担心的那样大。