【发布时间】:2015-11-05 16:14:59
【问题描述】:
NDB 数据存储禁止对不同属性进行多次不等式查询。为了解决这个问题,我认为解决方案可能是结合多个独立查询的结果。我发现this 2011 question 推荐geohashing,我对此并不熟悉。所以,也许今天有更好的解决方案。
考虑这两个查询:
q1 = User.query(User.age < 18).fetch()
q2 = User.query(User.city != 'New York City').fetch()
我尝试像这样加入他们:
results = set(q1).intersection(q2)
但是,我遇到TypeError: Model is not immutable。
我的问题:
- 是否有更好的方法来处理不同属性上的多个不等式过滤器?
- 如果不是,我该如何解决上面的
TypeError?
感谢您的帮助。
【问题讨论】:
-
有点。我已经阅读了那个答案,并且很好奇如何组合多个查询,这就是我在这个问题中的部分问题。
-
只做一个keys查询效率更高,你可以根据keys创建集合,然后只获取唯一的集合。 (尽管 ndb 缓存也会节省效率)但是您发现您无法创建一组模型。所以回到键。
标签: google-app-engine google-cloud-datastore app-engine-ndb endpoints-proto-datastore