我在Google Cloud Firestore中的查询条件有问题。
下面是我的代码,以获得第一个以HA_开头的文档并按ID DESC排序
public Article getLastArticleProvider() {
ApiFuture<QuerySnapshot> query = firebaseDB.getTblArticles()
.whereGreaterThanOrEqualTo("articleId", "HA_")
.orderBy("id", Query.Direction.DESCENDING)
.limit(1)
.get();
QuerySnapshot snapshotApiFuture;
Article article = null;
try {
snapshotApiFuture = query.get();
List<QueryDocumentSnapshot> documents = snapshotApiFuture.getDocuments();
for (QueryDocumentSnapshot document : documents) {
article = document.toObject(Article.class);
}
} catch (InterruptedException | ExecutionException e) {
return null;
}
return article;
}
我想获取文章ID为“ HA_”或“ XE_”开头的文章的最后ID
例如上图:
java.util.concurrent.ExecutionException:
com.google.api.gax.rpc.InvalidArgumentException:
io.grpc.StatusRuntimeException:INVALID_ARGUMENT:不等式过滤器属性
和第一排序顺序必须相同:articleId和id
如以下错误所述:
不等式过滤器属性和第一排序顺序必须相同:articleId
和id
因此
,在您的案例articleId和中,您无法使用不同的属性对元素进行过滤并同时对其进行排序id。
官方 文档中还有一个示例,说明如何不这样做:
范围过滤器和一阶按不同字段
citiesRef.whereGreaterThan("population", 100000).orderBy("country"); //Invalid
因此,要解决此问题,您应该对同一文档属性进行过滤和排序。
我对firestore(和编程)比较陌生,无法在网上找到解决问题的方法。 如果还有什么可能有帮助的,请告诉我。谢谢! 编辑以显示下一次尝试:
问题内容: 下图显示了简单聊天应用程序的数据结构。当两个用户想要通信时,会在他们之间创建一个频道。成员字符串数组字段列出了用户名。 我想在登录用户的任何渠道收到消息时通知用户。不知道如何做到这一点。 我尝试下面的查询没有成功。有任何想法吗? 问题答案: 编辑:2018年9月12日 从开始,现在可以更新数组成员。更多信息在这里。 如关于数组的官方文档中所示: 尽管可以存储阵列,但可以查询阵列成员或更
我试图创建自己的StopFilter实现,它将根据其他字段选择术语。 是否有一种方法可以从标记筛选器访问文档,然后访问其他字段? (我想使用UpdateRequestProcessor来通知我的TokenFilter关于状态的信息,但我没有找到很好的方法) 谢谢,本尼
问题内容: 示例:存储在索引中的文档表示测试分数和有关每个测试的元数据。 我需要能够过滤掉除最低分数以外的所有分数,并为每个应试者返回与该测试相关的元数据。所以我的预期结果是: 我现在看到的唯一方法是,首先通过用户使用嵌套的最小聚合来进行术语聚合,以获得最低分。 然后,我必须获取该查询的结果,并对每个用户进行过滤查询,然后根据最低得分值进行过滤,以获取其余的元数据。Yu 我想知道是否有一种方法可以
例如insert时需要忽略某个特定属性, update时只更新某些属性, 查询时需要跳过大字段等。 FieldFilter/FieldMatcher提供细致的过滤选项,包括: 黑名单(locked) 白名单(actived) 忽略空值(ignoreNull) 忽略数值0(ignoreZero) 忽略日期属性(ignoreDate) 忽略空字符串(ignoreBlankStr) 忽略数值型主键(ig