我有一个非常简单的Java对象集合,我使用Objectify 6.0.7存储在Google数据库(本机模式)中。存储、删除和查询对象都很好,但是在单个字段上使用orderBy子句的查询会失败,“没有找到匹配的索引”。在Datastore项目中,完全相同的代码工作得很好(因此Java代码没有问题)。
我无法找到明确的文档,说明Objectify是否可以与Firestore一起工作,我怀疑这就是问题所在。有什么想法?
这是一个查询:
ofy().load().type(Flight.class).order("-date").list();这是该集合中的一个示例记录(法语地区,但日期对象是有效的):
airTime: "0.8666666666666667"
date: 20 décembre 2020 à 19:51:41 UTC-5
engineStartTime: 20 décembre 2020 à 19:51:41 UTC-5
engineStopTime: 20 décembre 2020 à 21:14:41 UTC-5
flightTime: 1.3833333333333333
from: "CYQB"
landingTime: 20 décembre 2020 à 21:08:41 UTC-5
takeOffTime: 20 décembre 2020 à 20:16:41 UTC-5
to: "CYVB"使用升序(例如,order("desc")也失败),但是将.order('-desc')函数从查询中完全删除并不会导致任何错误,但当然返回结果是随机的。
我从文档中了解到,默认情况下,所有单字段索引都应该在Firestore中创建,并且我看不到在控制台中创建单个字段索引的方法。因此,我假设order函数中使用的date字段存在一个索引。
发布于 2022-01-05 04:27:07
Objectify v6使用com.google.Cloud:google库作为一个低级API。我很确定图书馆只在Datastore模式下工作。Google有一个完全不同(而且更原始)的修复模式Java库。
所以我认为现在您需要使用Datastore模式,而不是Firestore模式。
https://stackoverflow.com/questions/70587200
复制相似问题