Google app engine 具有selfreferenceproperty键的GqlQuery

Google app engine 具有selfreferenceproperty键的GqlQuery,google-app-engine,gqlquery,Google App Engine,Gqlquery,我有一个具有SelfReferenceProperty的实体,我想在selfref字段的键上使用WHERE条件进行搜索。我的目的是通过构建一个键列表,然后在同一个实体上迭代以构建嵌套列表来减少DB命中。我正在使用此列表访问memcache.get_multi()以获取要返回的结果集的缓存字典版本。以下是entitiy的缩写版本: 我基于另一个存储访问信息的实体构建了一个“category”密钥字典。我想做的是: 但是我得到了“BadQueryError:Parse Error:Invalid W

我有一个具有SelfReferenceProperty的实体,我想在selfref字段的键上使用WHERE条件进行搜索。我的目的是通过构建一个键列表,然后在同一个实体上迭代以构建嵌套列表来减少DB命中。我正在使用此列表访问memcache.get_multi()以获取要返回的结果集的缓存字典版本。以下是entitiy的缩写版本:

我基于另一个存储访问信息的实体构建了一个“category”密钥字典。我想做的是:

但是我得到了“BadQueryError:Parse Error:Invalid WHERE Condition”错误

我知道我可以通过以下方式传递整个类别实体:

但是,如果我已经有了要筛选的类别的键值,那么这看起来像是浪费了RPC

有没有办法在referenceProperty的键上使用WHERE条件


谢谢

参考属性存储为键,因此您可以直接比较它们:

for categoryKey in accessDict:  
    q = db.GqlQuery('SELECT __key__ FROM Link WHERE category = :1', db.Key(categoryKey))

谢谢Drew,我一定试过了所有的组合,但最简单的一个有效。
for categoryKey in accessDict:  
    categoryDBKey = db.Key(categoryKey)  
    q = db.GqlQuery('SELECT __key__ FROM Link WHERE category.key() = :1',categoryDBKey )  

for qItem in q:  
    cacheList.append('Link_' + str(qItem))  
    dataCache = memcache.get_multi(cacheList)
for categoryKey in accessDict:  
    category = db.ket(db.Key(categoryKey))  
    q = db.GqlQuery('SELECT __key__ FROM Link WHERE category = :1',category)
for categoryKey in accessDict:  
    q = db.GqlQuery('SELECT __key__ FROM Link WHERE category = :1', db.Key(categoryKey))