google-app-engine - 在 objectify 中查询字段不为 null 的所有记录的有效方法

标签 google-app-engine objectify

我想有效地查询索引字段以检索索引字段不为空(存在于索引中)的所有记录。要查询的字段包含一个Ref<T>到另一个实体,如果这是相关的。

我能做的是不等式搜索,比如 .filter/.filterKey("fieldname >=", "a") ,其中 a 是我想要获取的最小 ASCII。

但这有效率吗?或者我能否以某种方式进行相等搜索,返回索引中存在的所有记录?

--

我的数据是这样的:我想过滤掉“overlay”列有键的所有记录,并忽略那些没有设置字段的记录。如果可能,我想使用相等过滤器,所以我不需要复合索引(因为我同时在其他字段上进行过滤)。

snapshot of data

--

我可以用它来测试 != null

.filter("user >", "\uFFFD");

这是为了测试== null

.filter("user <", "\uFFFD");

我想这不是应该的方式。有没有办法使用相等而不是不等来解决这个问题?

最佳答案

如果要查询索引字段为空值的实体:

ofy().load().type(Thing.class).filter("fieldname !=", null)

但是,这与相等过滤器不同。在幕后,GAE 将 != 视为一对过滤器(> 和 <),这带来了不等式过滤器的局限性。

如果您需要对“not null”进行相等筛选,请在您的实体中创建一个合成索引字段,该字段使用@OnSave 方法进行填充。您可以对“真”值使用部分索引来限制索引这些额外数据的成本(即,@Index(IfTrue.class))

关于google-app-engine - 在 objectify 中查询字段不为 null 的所有记录的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25834899/

相关文章:

google-app-engine - Google Datastore 新定价效果操作

java - 使用 Objectify4 持久化 map

java - 使用 objectify 实体模型进行模拟测试时的 Ref & Key 问题

java - 对象化分页

java - GAE 数据存储读取性能

java - 允许 App Engine 服务帐户编辑日历

python - 为什么我的 RPC 总数在上升?

java - AppEngine 全文文档索引使用词干运算符进行搜索

python - 将远程 FIFO 队列实现为 Python GAE 应用程序的最简单方法是什么?

java - Objectify/GAE - 具体的非规范化问题