如何按ID ndb.query设置过滤

时间:2018-02-28 07:15:45

标签: python google-app-engine google-cloud-datastore app-engine-ndb

我尝试过滤ID,例如以下

ancestorid  id      value
1111       aaaa     10       // I want to fetch this
1111       bbbb     20
2222       aaaa     30       // and this.
2222       cccc     40

但是,我找不到ndb.query引用中的id过滤。

我可以按键过滤。但是它需要祖先键(id)。 我想获取跨越实体组。

如何使用ndb.query过滤ID?

1 个答案:

答案 0 :(得分:2)

您无法通过单个查询执行此操作。这是因为如果您进行祖先查询,您只会从该祖先实体组中获得结果,如果您不进行祖先查询,则您只会获得没有祖先的实体。所有这些查询都会产生不重叠的结果。

获得所需结果的唯一方法是使用多个查询:

  • 获取感兴趣的祖先密钥(可能使用查询)
  • 为每个获得的祖先密钥执行一个祖先查询
  • 如果您寻找的实体可能没有祖先,也会执行非祖先查询
  • 合并上述所有已执行查询的结果