谷歌的应用程序引擎查询(不过滤器),用于儿童的一个实体
-
22-08-2019 - |
题
是孩子的一个实体可在查询?
鉴于:
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产品由一个特别工厂吗?祖先的方法是一个过滤器,所以使用例如产品。所有().祖先(factory_1)将需要一再呼吁的数据存储库。
解决方案
虽然祖先被描述为一个"过滤器",它实际上仅有更新的查询添加祖先的条件。你不请求发送的数据存储直到你迭代过查询,所以你有什么会工作的罚款。
一个小点但:500实体同样的父母可以伤害的可扩展性,因为写入化成员的实体集团。如果你只是想要跟踪的这家工厂做了一个产品,使用一个ReferenceProperty:
class Product(db.Model):
factory = db.ReferenceProperty(Factory, collection_name="products")
然后你可以得到的所有产品的使用:
myFactory.products
不隶属于 StackOverflow