我正在使用Google App Engine NDB,并尝试执行以下查询:
query = Club.query(ndb.OR(
ndb.AND(Club.memberIds == userId, Club.modifiedDate > date),
ndb.AND(Club.activityDate > date, ancestor = userKey)
))
但是,我得到一个运行时错误:
^{pr2}$这和祖先的地位有关。This answer能够在一个例子中指出解决方案,但是这个解决方案在这里不适用,因为祖先在实际的AND子句中。在
不能将祖先用作筛选器的一部分;它必须是直接在query()调用中使用的关键字参数。当前,OR查询无论如何都会变成多个查询,因此OR()方法给您的唯一好处是更容易地组合结果。但要实现这一点,您无论如何都必须按键排序,编写一个小的merge函数来合并按键排序的两组查询结果,这很简单。(也可以通过调用ndb.查询.\u MultiQuery(),但后者不是一个文档化的API,而且很难正确使用,所以最好自己来做。)
是否可以重写查询以使用GQL?在
编辑
否决我自己的建议。不可能重写查询以使用GQL。GQL不支持
OR
。在参见:https://developers.google.com/appengine/docs/python/datastore/gqlreference
相关问题 更多 >
编程相关推荐