当前位置:  开发笔记 > 编程语言 > 正文

适用于实体子级的Google App Engine查询(不过滤)

如何解决《适用于实体子级的GoogleAppEngine查询(不过滤)》经验,为你挑选了1个好方法。

查询中是否有实体的子项?

鉴于:

class Factory(db.Model):
    """ Parent-kind """
    name = db.StringProperty()

class Product(db.Model):
    """ Child kind, use Product(parent=factory) to make """
    @property
    def factory(self):
        return self.parent()
    serial = db.IntegerProperty()

假设有500家工厂生产了500种产品,总计250,000种产品.有没有办法形成一个资源有效的查询,只返回一个特定工厂生产的500个产品?祖先方法是一个过滤器,因此使用例如Product.all().ancestor(factory_1)将需要重复调​​用数据存储区.



1> mcobrien..:

虽然祖先被描述为"过滤器",但它实际上只是更新查询以添加祖先条件.在迭代查询之前,您不会向数据存储区发送请求,因此您可以正常工作.

但有一点:500个具有相同父级的实体可能会损害可伸缩性,因为写入会被序列化为实体组的成员.如果您只想跟踪制作产品的工厂,请使用ReferenceProperty:

class Product(db.Model):
   factory = db.ReferenceProperty(Factory, collection_name="products")

然后,您可以使用以下方式获取所有产品:

myFactory.products

推荐阅读
LEEstarmmmmm
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有