如何有效地查询对某个属性具有任何值的数据存储实体?

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_”)并搜索它会更有效。当然,您剩余的代码必须在适当的情况下将标记值处理为空白。

【讨论】:

以上是关于如何有效地查询对某个属性具有任何值的数据存储实体?的主要内容,如果未能解决你的问题,请参考以下文章

如何查询具有特定属性值的核心数据对象

如何在 Spark 中有效地选择包含某个值的数据框列?

AppEngine 数据存储区查询具有给定属性的所有实体 (Java)

python 有效地翻页查询以从Google App Engine数据存储中获取所有实体。

如何通俗地理解三个范式?

NSArray 到核心数据项