如何在App Engine中使用ndb来查询密钥对中具有特定值的所有实体?

时间:2014-02-19 02:25:51

标签: google-app-engine python-2.7 app-engine-ndb

如果数据存储区中有一堆Spam个实体,每个实体都有一对由两对组成的密钥......

ndb.Key(AClass, a_string, BClass, b_string)

...如何查询其密钥中Spam具有给定值的所有a_string个实体?

我试图避免这样做......

hits = [ spam for spam in Spam.query() if spam.key.pairs()[0][1] == a_string ]

...并避免在实体中添加新属性以存储a_string,当它已经是密钥的一部分时。

获取Spam'foo'个实体的列表的最佳方法是Key构造函数中四个args中第二个的值是什么?

1 个答案:

答案 0 :(得分:4)

您的要求“您如何查询其密钥中a_string具有给定值的所有垃圾邮件实体?”是一个祖先查询 - https://developers.google.com/appengine/docs/python/ndb/queries#ancestor

在您的情况下,您将执行以下操作

result = AClass.query(ancestor=ndb.Key(AClass,a_string))