エンティティの子供のためのGoogle App Engineのクエリ(フィルタリングしません)
-
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の工場250,000製品の合計500の製品を作っていると仮定します。ある特定の工場で作られただけで500の製品を返しますリソース効率の高いクエリを形成する方法はありますか?祖先方法ので、例えば使用し、フィルタでありますProduct.all()。祖先(factory_1)は、データストアへの繰り返しの呼び出しが必要になります。
解決
祖先は、「フィルタ」として記載されているが、
、それは実際には祖先の条件を追加するクエリを更新します。あなたは、クエリを反復処理するまで、データストアに要求を送信しないので、何を持っていることは正常に動作します。
ワンポイントマイナーかかわら:書き込みがエンティティグループのメンバーに連載されているので、同じ親を持つ500個の実体は、スケーラビリティを傷つけることができます。あなただけの製品を作った工場を追跡したい場合は、ReferencePropertyを使用します:
class Product(db.Model):
factory = db.ReferenceProperty(Factory, collection_name="products")
あなたはその後、使って、すべての製品を取得することができます:
myFactory.products
所属していません StackOverflow