我想知道为什么需要在投影查询中包含某些属性。我想得到一个不同的'foo'属性列表。在
Object.query(projection=[Object.foo], distinct=True) \
.filter(Object.username == user.nickname()) \
.filter(Object.bar >= value) \
.fetch()
即使建议的索引已经启动并正在运行,这个索引也会给出一个NeedIndexError。原因是第二个过滤器基于bar>;=value。通过删除该过滤器,查询可以完美地工作,但并没有达到目标。在
^{pr2}$这一个是有效的,但是现在你得到的结果不是只有不同的foos,而是foo和bar的carthesian产品。这不是我们最初的目标。在
Object.query() \
.filter(Object.username == user.nickname()) \
.filter(Object.bar >= value) \
.fetch(projection=[Object.foo])
这个方法也可以,但是没有办法按“foo”分组,因此会产生一个具有重复“foo”值的列表。在
你可以在上面的列表中看到两个问题的答案。如果可能的话,我想避免这种情况。因此,我有两个问题:
这是索引推荐系统的一个错误,应该在AppEngine的1.8.6版本中修复。问题是,为了提供不同的属性,这些属性必须是排序顺序中的第一个。注意,一个不等式也必须是排序顺序中的第一个。所以如果你有一个不等式和一个不同的投影,它们必须在同一个性质上。在
投影必须在筛选器中的唯一原因是您正在请求不同的属性。你可以把它看作是一个在同一个属性上有一个groupby的投影。为了进行此分组,必须对属性进行排序以提供高效的重复数据消除。在
执行所需查询的唯一方法是在内存中执行一些操作(正如您在问题中提到的)。另一个选择是不使用不等式过滤器,然后在内存中进行这种过滤。在
如果您升级到1.8.6SDK,您应该开始得到更好的(-ish)错误消息。在
相关问题 更多 >
编程相关推荐