Tho*_*day 6 google-app-engine gql gqlquery ancestor
查询中是否有实体的子项?
鉴于:
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()
Run Code Online (Sandbox Code Playgroud)
假设有500家工厂生产了500种产品,总计250,000种产品.有没有办法形成一个资源有效的查询,只返回一个特定工厂生产的500个产品?祖先方法是一个过滤器,因此使用例如Product.all().ancestor(factory_1)将需要重复调用数据存储区.
虽然祖先被描述为"过滤器",但它实际上只是更新查询以添加祖先条件.在迭代查询之前,您不会向数据存储区发送请求,因此您可以正常工作.
但有一点:500个具有相同父级的实体可能会损害可伸缩性,因为写入会被序列化为实体组的成员.如果您只想跟踪制作产品的工厂,请使用ReferenceProperty:
class Product(db.Model):
factory = db.ReferenceProperty(Factory, collection_name="products")
Run Code Online (Sandbox Code Playgroud)
然后,您可以使用以下方式获取所有产品:
myFactory.products
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2875 次 |
最近记录: |