如何有效地查询对某个属性具有任何值的数据存储实体?
Posted
技术标签:
【中文标题】如何有效地查询对某个属性具有任何值的数据存储实体?【英文标题】:How do I query datastore entities that have any value for a certain property efficiently? 【发布时间】:2014-03-25 09:56:39 【问题描述】:我有以下型号
class User(ndb.Model):
name = ndb.StringProperty()
我可以通过以下操作查询所有没有名称的用户实体:
users_without_names = User.query(User.name == None).fetch(100)
但是如何在不使用 != None 的情况下查询具有名称的用户实体?
我还需要在另一个属性上添加另一个不等式过滤器,使用 != 将转换为等式过滤器,所以我想避免使用 !=。
【问题讨论】:
【参考方案1】:你可以搜索所有的名字>“”
users_with_names = User.query(User.name > "").fetch(100)
【讨论】:
如我所问,有没有不使用不等式过滤器的方法?【参考方案2】:!= and IN Operations 文档中的注释警告说,没有属性的实体不会被索引。选择将被索引的sentinel value(例如“_no_name_”)并搜索它会更有效。当然,您剩余的代码必须在适当的情况下将标记值处理为空白。
【讨论】:
以上是关于如何有效地查询对某个属性具有任何值的数据存储实体?的主要内容,如果未能解决你的问题,请参考以下文章
AppEngine 数据存储区查询具有给定属性的所有实体 (Java)