"-6ren"> "-我有 A 和 B 类型的对象,其中 A 有很多 B(一对多)。 我使用它有两个原因 能够在实体集团内进行交易 查找作为 A 对象列表子对象的所有 B 对象 为了适应 (1),我需要 A 成为 B 的父-6ren">
gpt4 book ai didi

google-app-engine - 在 AppEngine 查询中使用 "ANCESTOR IN "

转载 作者:太空宇宙 更新时间:2023-11-03 15:34:43 25 4
gpt4 key购买 nike

我有 A 和 B 类型的对象,其中 A 有很多 B(一对多)。

我使用它有两个原因

  1. 能够在实体集团内进行交易
  2. 查找作为 A 对象列表子对象的所有 B 对象

为了适应 (1),我需要 A 成为 B 的父级。我也可以使用这种关系来执行 (2) 查询吗?该查询将是一个“ANCESTOR IN”过滤器,这可能吗?

否则我会以两种方式存储这种关系,一种是作为父属性,另一种是作为常规属性?

最佳答案

no ANCESTOR IN运算符,只有 ANCESTOR IS -- 换句话说,您可以很容易地找到一个 A 的 child ,但不是很多。以下将找到作为特定 A 子级的所有 B 实体。

parent_key = db.Key.from_path('A', parent_key_name)
children_of_a = B.all().ancestor(parent_key).fetch(100)

了解所有 IN 非常重要App Engine 中的查询在后台使用多个查询。如果你添加一个父属性来查询,并且你正在使用高复制数据存储(你应该是),你还需要了解 cross-entity group queries 的细微差别。 -- 它们不会高度一致。因此,如果在大多数情况下您希望有一个非常小的父列表(例如,一个或两个),并且您想要强一致性,那么运行多个祖先查询可能会更好。如果您通常有很多 parent ,并且最终一致性没问题,请添加一个您可以查询的属性。

关于google-app-engine - 在 AppEngine 查询中使用 "ANCESTOR IN <list>",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7104052/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com